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