188

(文書化されているように)マイナス記号を処理する以外Integer.parseInt()に、との間に他の違いはInteger.valueOf()ありInteger.parseInt()ますか?

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

4

5 に答える 5

244

実際には、内部でvalueOf使用します。parseInt違いは、オブジェクトを返すのに対しparseIntintプリミティブを返すことです。Integer.classソースから考えてみましょう。valueOfInteger

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(",", ""));
于 2011-09-08T22:00:53.047 に答える
30

最初の質問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);
于 2011-09-08T22:00:38.050 に答える
21

Integer.valueOf()整数オブジェクトInteger.parseInt()返し、int プリミティブを返します。

于 2011-09-08T22:02:29.600 に答える
9

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

  • parseXxx()プリミティブ型を返します
  • valueOf()タイプのラッパーオブジェクト参照を返します。
于 2016-09-09T13:36:51.647 に答える
8

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

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

于 2011-09-08T22:01:24.340 に答える