' P '

whatever I will forget

Java String型からInt型変換とか, vice versa (あとChar to Int/ int to char & char to String)

C言語から入るとatoiって言えば大体伝わると思ってたけどJavaから入ればまーそうならないっぽい。

String to int

String numberAsString = "100";
Int number = Integer.parseInt(numberAsString);
System.out.println(number);

とやればInt型の100になります。
doubleだったらDouble.parseDouble(hoo);みたいな感じです

ちなみにちょっとへぇーと思ったJavaの仕様。 (当たり前だと思いますが)

String numberAsString = "100";
numberAsString += 1;

ってやれば勝手にJava側が数値だけど文字列と認識して文字列として結合してくれるみたい
結果はもちろん1001になるけれども、、

String numberAsString = "100hoooooooo";
int number = Integer.parseInt(numberAsString);
numberAsString += 1;

ちなみに上記みたいなことしたら、ちゃんとコンパイルエラーになってくれます。
これもparseInt様のおかげです。

int to String

String convertedStr = Integer.toString(100-1);

Char to Int

この問題でわからなかった。
Stringの一文字ずつをintに変換したい。でも、charAt()を使うと出力がcharになるので、単純にInteger.parseInt()が使えない。
parseInt()はString変数を引数としているため。

方法は知ってないと損する1つの方法と、スタンダードな2つの方法。

知ってないと損するやり方

なんとInteger.parseInt()に無理やり""のStringとcharを結合させて変換する方法。
正直これはめっちゃ楽。

for(int i=0; i<n; i++) {
  String s = Integer.toString(i);
  for(int j=0; j<s.length(); j++) {
    int sum += Integer.parseInt("" + s.charAt(j));
  }
}

スタンダードその1

Character.getNumericValue()を使う
ただなんとなく忘れやすい...

for(int i=0; i<n; i++) {
  String s = Integer.toString(i);
  for(int j=0; j<s.length(); j++) {
    int sum += Character.getNumericValue(s.charAt(j));
  }
}

スタンダードその2

String.valueOf()を使ってcharをStringに変換してparseInt()を使う
まあ正攻法というか、これは忘れてはいけないと思う
ただちょっとくどい。

for(int i=0; i<n; i++) {
  String s = Integer.toString(i);
  for(int j=0; j<s.length(); j++) {
    int sum += Integer.parseInt(String.valueOf(s.charAt(j)));
  }
}

結論は一番楽な知ってないと損するやり方を使おうかなwww

参考

stackoverflow.com

stackoverflow.com

int to Char

これは知らなんだ。

char a = '1';
char b = a + '0';

追記 6/5

上記はコンパイルエラーになります。
error: incompatible types: possible lossy conversion from int to char 正しくは下記です。

char a = '1';
char b = (char)(a + '0');

javaは'0'とすることでASCIIに変換し、48と認識するよう。a1だったので、48+1=49、これをASCIIで表すと1になるとのこと。

Here, we used '0' because chars are actually represented by ASCII values. '0' is a char and represented by the value of 48.

We typed (a + '0') and in order to add these up, Java converted '0' to its ASCII value which is 48 and a is 1 so the sum is 49. Then what we did is:

(char)(49) We casted int to char. ASCII equivalent of 49 is '1'. You can convert any digit to char this way and is smarter and better way than using .toString() method and then subtracting the digit by .charAt() method.

stackoverflow.com

Char to String

Character.toString(str);

String to Char

基本的には、str.charAt(i)