実行結果を見ると、どちらも同じように見えるがその違いが分からなかったので調べてみた。
var num1 = Integer.parseInt("1");
var num2 = Integer.valueOf("2");
System.out.println(num1);
System.out.println(num2);
// 実行結果
1
2
Java の型推論を使い変数の確認をすると、num1 は int 型で、num2 は Integer 型のようだ。
Integer.class に飛ぶと、戻り値が違うことも分かる。
public static int parseInt(String s) throws NumberFormatException {
return parseInt(s,10);
}
public static Integer valueOf(String s) throws NumberFormatException {
return Integer.valueOf(parseInt(s, 10));
}
まとめ
Integer.parseInt(xxx) はプリミティブ型で、
Integer.valueOf(xxx) はInteger 型(int 型のラッパークラス)が違いである。
戻り値の返ってきたあと、どちらのデータ型を使用して処理をするかが使い所の違いになるのかなぁ。とは、valueOf の方が若干速度が遅いとかくらいなのかしら。
コメント