除了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.