除了Integer.parseInt()处理减号(如记录)外,和之间还有其他区别Integer.valueOf()吗Integer.parseInt()?
而且由于两者都不能解析,为十进制千位分隔符(产生NumberFormatException),是否有可用的 Java 方法来做到这一点?
除了Integer.parseInt()处理减号(如记录)外,和之间还有其他区别Integer.valueOf()吗Integer.parseInt()?
而且由于两者都不能解析,为十进制千位分隔符(产生NumberFormatException),是否有可用的 Java 方法来做到这一点?
Actually, valueOf uses parseInt internally. The difference is parseInt returns an int primitive while valueOf returns an Integer object. Consider from the Integer.class source:
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));
}
As for parsing with a comma, I'm not familiar with one. I would sanitize them.
int million = Integer.parseInt("1,000,000".replace(",", ""));
First Question: Difference between parseInt and valueOf in java?
Second Question:
NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
Number number = format.parse("1,234");
double d = number.doubleValue();
Third Question:
DecimalFormat df = new DecimalFormat();
DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setDecimalSeparator('.');
symbols.setGroupingSeparator(',');
df.setDecimalFormatSymbols(symbols);
df.parse(p);
Integer.valueOf() returns an Integer object, while Integer.parseInt() returns an int primitive.
这两种方法的区别在于:
parseXxx()返回原始类型valueOf()返回该类型的包装对象引用。parseInt() parses String to int while valueOf() additionally wraps this int into Integer. That's the only difference.
If you want to have full control over parsing integers, check out NumberFormat with various locales.