这个问题在这里已经有了答案:Java中的parseInt()和valueOf()之间的区别? (11 个回答) 4 年前关闭。
除了 Integer.parseInt()
处理减号(如文档所述)外,Integer.valueOf()
和 Integer.parseInt()
之间还有其他区别吗?
由于两者都不能将 ,
解析为 decimal 千位分隔符(产生 NumberFormatException
),是否有可用的 Java 方法来做到这一点?
"1,000,000"
转换为值 1000000
的 int ?还是将 "123,4"
之类的东西转换为 123
的 int 值?
实际上,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(",", ""));
第一个问题:Difference between parseInt and valueOf in java?
第二个问题:
NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
Number number = format.parse("1,234");
double d = number.doubleValue();
第三个问题:
DecimalFormat df = new DecimalFormat();
DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setDecimalSeparator('.');
symbols.setGroupingSeparator(',');
df.setDecimalFormatSymbols(symbols);
df.parse(p);
"1,000,000" --> (int)1000000
,而不是欧洲小数。
Integer.valueOf()
返回一个整数 object,而 Integer.parseInt()
返回一个 int
primitive。
这两种方法的区别在于:
parseXxx() 返回原始类型
valueOf() 返回该类型的包装对象引用。
parseInt()
将 String
解析为 int
,而 valueOf()
还将此 int
包装到 Integer
中。这是唯一的区别。
如果您想完全控制解析整数,请查看具有各种语言环境的 NumberFormat
。