web-dev-qa-db-de.com

Integer.valueOf () vs. Integer.parseInt ()

Gibt es neben Integer.parseInt(), das das Minuszeichen behandelt (wie dokumentiert), noch weitere Unterschiede zwischen Integer.valueOf() und Integer.parseInt()?

Und da keiner von beiden , Als ein dezimal Tausendertrennzeichen (erzeugt NumberFormatException), gibt es eine bereits verfügbare Java Methode, um das zu tun?

172
ateiob

Tatsächlich verwendet valueOfparseInt intern. Der Unterschied ist, dass parseInt ein int Grundelement zurückgibt, während valueOf ein Integer Objekt zurückgibt. Betrachten Sie aus der Integer.class-Quelle:

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

Was das Parsen mit einem Komma angeht, bin ich mit keinem vertraut. Ich würde sie desinfizieren.

int million = Integer.parseInt("1,000,000".replace(",", ""));
218
corsiKa

Erste Frage : nterschied zwischen parseInt und valueOf in Java?

Zweite Frage :

NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
Number number = format.parse("1,234");
double d = number.doubleValue();

Dritte Frage :

DecimalFormat df = new DecimalFormat();
DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setDecimalSeparator('.');
symbols.setGroupingSeparator(',');
df.setDecimalFormatSymbols(symbols);
df.parse(p);
29

Integer.valueOf() gibt eine Ganzzahl object zurück, während Integer.parseInt() eine intprimitive zurückgibt.

20
Joe

Der Unterschied zwischen diesen beiden Methoden ist:

  • parseXxx() gibt den primitiven Typ zurück
  • valueOf() gibt eine Wrapper-Objektreferenz des Typs zurück.
8

parseInt() analysiert String bis int, während valueOf() dieses int zusätzlich in Integer umschließt. Das ist der einzige Unterschied.

Wenn Sie die volle Kontrolle über das Parsen ganzer Zahlen haben möchten, lesen Sie NumberFormat mit verschiedenen Gebietsschemas.

8