Integer.valueOf()与Integer.parseInt()

除了Integer.parseInt()处理减号(如logging), Integer.valueOf()Integer.parseInt()之间还有其他区别吗?

因为既不能parsing,作为一个 十进制 千位分隔符(产生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(",", "")); 

第一个问题 : 差异parseInt和valueOf在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); 

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

parseInt()Stringparsing为intvalueOf()将此int另外包装到Integer 。 这是唯一的区别。

如果你想完全控制parsing整数,检查出不同的语言环境的NumberFormat

这两种方法的区别是:

  • parseXxx()返回原始types
  • valueOf()返回types的包装器对象引用。