(文書化されているように)マイナス記号を処理する以外Integer.parseInt()に、との間に他の違いはInteger.valueOf()ありInteger.parseInt()ますか?
そして、どちらも解析できない,ので10進数千単位の区切り文字(を生成NumberFormatException)、それを行うためのすでに利用可能なJavaメソッドはありますか?
(文書化されているように)マイナス記号を処理する以外Integer.parseInt()に、との間に他の違いはInteger.valueOf()ありInteger.parseInt()ますか?
そして、どちらも解析できない,ので10進数千単位の区切り文字(を生成NumberFormatException)、それを行うためのすでに利用可能なJavaメソッドはありますか?
実際には、内部でvalueOf使用します。parseInt違いは、オブジェクトを返すのに対しparseInt、intプリミティブを返すことです。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(",", ""));
最初の質問: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);
Integer.valueOf()整数オブジェクトをInteger.parseInt()返し、int プリミティブを返します。
これら2つの方法の違いは次のとおりです。
parseXxx()プリミティブ型を返しますvalueOf()タイプのラッパーオブジェクト参照を返します。parseInt()に解析Stringしint、さらにこれをにvalueOf()ラップします。それが唯一の違いです。intInteger
整数の解析を完全に制御したい場合はNumberFormat、さまざまなロケールで確認してください。