Integer.valueOf()与Integer.parseInt()

时间:2011-09-08 21:56:51

标签: java string integer decimal-point

除了Integer.parseInt()处理减号(如文档所述)之外,Integer.valueOf()Integer.parseInt()之间还有其他差异吗?

既然两者都不能将,解析为十进制千位分隔符(生成NumberFormatException),那么有没有可用的Java方法呢?

5 个答案:

答案 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()返回类型的包装器对象引用。