it-swarm.it

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

A parte Integer.parseInt() che gestisce il segno meno (come documentato), ci sono altre differenze tra Integer.valueOf() e Integer.parseInt()?

E poiché nessuno dei due può analizzare , come a decimale separatore di migliaia (produce NumberFormatException), esiste un metodo Java già disponibile per farlo?

168
ateiob

In realtà, valueOf utilizza parseInt internamente. La differenza parseInt restituisce una primitiva int mentre valueOf restituisce un oggetto Integer. Considera dalla fonte 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));
}

Per quanto riguarda l'analisi con una virgola, non ho familiarità con uno. Li avrei sanitizzati.

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

Prima domanda : Differenza tra parseInt e valueOf in java?

Seconda domanda :

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

Terza domanda :

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

Integer.valueOf() restituisce un oggetto intero , mentre Integer.parseInt() restituisce una primitiva int.

20
Joe

La differenza tra questi due metodi è:

  • parseXxx() restituisce il tipo primitivo
  • valueOf() restituisce un riferimento a un oggetto wrapper del tipo.
8

parseInt() analizza Stringa intmentre valueOf() avvolge ulteriormente intin Integername__. Questa è l'unica differenza.

Se vuoi avere il pieno controllo sull'analisi degli interi, controlla NumberFormatNAME _ con varie impostazioni locali.

8