parsestring java
Integer.valueOf() versus Integer.parseInt() (5)
Esta pregunta ya tiene una respuesta aquí:
- Diferencia entre parseInt y valueOf en java? 11 respuestas
Además de Integer.parseInt()
manejando el signo menos (como está documentado), ¿hay alguna otra diferencia entre Integer.valueOf()
y Integer.parseInt()
?
Y como ninguno puede analizar ,
como decimal separador de miles (produce NumberFormatException
), ¿hay un método Java disponible para hacerlo?
En realidad, valueOf
usa parseInt
internamente. La diferencia es parseInt
devuelve una primitiva int
mientras que valueOf
devuelve un objeto Integer
. Considere de la fuente 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));
}
En cuanto a analizar con una coma, no estoy familiarizado con ninguno. Yo los desinfectaría.
int million = Integer.parseInt("1,000,000".replace(",", ""));
La diferencia entre estos dos métodos es:
-
parseXxx()
devuelve el tipo primitivo -
valueOf()
devuelve una referencia de objeto contenedor del tipo.
Integer.valueOf()
devuelve un objeto Integer, mientras que Integer.parseInt()
devuelve una primitiva int
.
parseInt()
analiza String
a int
mientras que valueOf()
también ajusta este int
en Integer
. Esa es la única diferencia.
Si desea tener control total sobre el análisis de números enteros, consulte NumberFormat
con varias configuraciones regionales.
Primera pregunta : ¿ diferencia entre parseInt y valueOf en java?
Segunda pregunta :
NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
Number number = format.parse("1,234");
double d = number.doubleValue();
Tercera pregunta :
DecimalFormat df = new DecimalFormat();
DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setDecimalSeparator(''.'');
symbols.setGroupingSeparator('','');
df.setDecimalFormatSymbols(symbols);
df.parse(p);