ValueOf ()与 Integer.parseInt ()

除了 Integer.parseInt()处理负号(如文档所示) ,Integer.valueOf()Integer.parseInt()之间还有其他的区别吗?

既然两者都不能将 ,解析为 十进制千分隔符(生成 NumberFormatException) ,那么是否已经有可用的 Java 方法来实现这一点?

207446 次浏览

第一个问题: Java 中 parseInt 和 valueOf 的区别?

返回文章页面

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);

实际上,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(",", ""));

parseInt()解析 Stringint,而 valueOf()另外包装这个 intInteger。这是唯一的区别。

如果您想对解析整数有完全的控制权,请使用各种语言环境查看 NumberFormat

Integer.valueOf()返回一个整数 对象,而 Integer.parseInt()返回一个 int 原始

这两种方法的区别是:

  • parseXxx()返回基元类型
  • valueOf()返回类型的包装器对象引用。