除了Integer.parseInt()
处理减号(如文档所述)之外,Integer.valueOf()
和Integer.parseInt()
之间还有其他差异吗?
既然两者都不能将,
解析为十进制千位分隔符(生成NumberFormatException
),那么有没有可用的Java方法呢?
答案 0 :(得分:210)
实际上,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(",", ""));
答案 1 :(得分:29)
第一个问题: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);
答案 2 :(得分:20)
Integer.valueOf()
返回整数对象,而Integer.parseInt()
返回int
原语。
答案 3 :(得分:8)
parseInt()
将String
解析为int
,而valueOf()
将此int
包含到Integer
中。这是唯一的区别。
如果您想完全控制解析整数,请查看NumberFormat
各种语言环境。
答案 4 :(得分:8)
这两种方法的区别在于:
parseXxx()
返回基元类型valueOf()
返回类型的包装器对象引用。