web-dev-qa-db-ja.com

Integer.valueOf()対Integer.parseInt()

Integer.parseInt()のマイナス記号の処理(ドキュメントに記載)以外に、Integer.valueOf()Integer.parseInt()の間に他の違いはありますか?

そして、どちらも,を 小数 数千の区切り文字(NumberFormatExceptionを生成)、それを行うための既に利用可能なJavaメソッドはありますか?

168
ateiob

実際、valueOfは内部でparseIntを使用します。違いは、parseIntintプリミティブを返し、valueOfIntegerオブジェクトを返します。 Integer.classソースから検討してください。

public static int parseInt(String s) throws NumberFormatException {
    return parseInt(s, 10);
}

public static Integer valueOf(String s, int radix) throws NumberFormatException {
    return Integer.valueOf(parseInt(s, radix));
}

public static Integer valueOf(String s) throws NumberFormatException {
    return Integer.valueOf(parseInt(s, 10));
}

コンマを使用した構文解析については、コンマに慣れていません。私はそれらを消毒します.

int million = Integer.parseInt("1,000,000".replace(",", ""));
212
corsiKa

最初の質問javaのparseIntとvalueOfの違い?

2番目の質問

NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
Number number = format.parse("1,234");
double d = number.doubleValue();

3番目の質問

DecimalFormat df = new DecimalFormat();
DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setDecimalSeparator('.');
symbols.setGroupingSeparator(',');
df.setDecimalFormatSymbols(symbols);
df.parse(p);
29

Integer.valueOf()は整数objectを返し、Integer.parseInt()intprimitiveを返します。

20
Joe

これら2つの方法の違いは次のとおりです。

  • parseXxx()はプリミティブ型を返します
  • valueOf()は、その型のラッパーオブジェクト参照を返します。
8

parseInt()Stringintに解析し、valueOf()はさらにこのintIntegerにラップします。それが唯一の違いです。

整数の解析を完全に制御したい場合は、さまざまなロケールで NumberFormat をチェックしてください。

8