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