This question already has answers here: Different between parseInt() and valueOf() in java? (11 answers) Closed 4 years ago.
Aside from Integer.parseInt()
handling the minus sign (as documented), are there any other differences between Integer.valueOf()
and Integer.parseInt()
?
And since neither can parse ,
as a decimal thousands separator (produces NumberFormatException
), is there an already available Java method to do that?
"1,000,000"
into an int of value 1000000
? Or something like "123,4"
into an int value of 123
?
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);
"1,000,000" --> (int)1000000
, not the European decimal.
Integer.valueOf()
returns an Integer object, while Integer.parseInt()
returns an int
primitive.
The difference between these two methods is:
parseXxx() returns the primitive type
valueOf() returns a wrapper object reference of the type.
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.
Success story sharing