Bueno, la API para Integer.valueOf(String)
de hecho dice que el String
se interpreta exactamente como si se hubiera dado a Integer.parseInt(String)
. Sin embargo, valueOf(String)
devuelve un objeto new
Integer()
mientras que parseInt(String)
devuelve una primitiva int
.
Si quieres disfrutar de los beneficios potenciales de almacenamiento en caché de Integer.valueOf(int)
, también se puede utilizar esta monstruosidad:
Integer k = Integer.valueOf(Integer.parseInt("123"))
Ahora bien, si lo que quiere es el objeto y no lo primitivo, a continuación, utilizando valueOf(String)
puede ser más atractivo que hacer un nuevo objeto de parseInt(String)
porque el primero está constantemente presente en Integer
, Long
, Double
, etc.
¿Hay alguna diferencia de rendimiento o memoria entre los dos enfoques? – Logan
'Integer.valueOf (Integer.parseInt (" 123 "))' no tiene ningún beneficio sobre 'Integer.valueOf (" 123 ")' o 'Integer.valueOf (123)' aparte de perder ciclos y el tamaño de su programa. –
Existe una diferencia: el nuevo objeto (potencialmente) asignado por valueOf viene con una tara (memoria para el objeto, manejo, GC), mientras que el plain int es extremadamente "liviano". (Para los valores más comunes, obtendrá referencias a Objetos preexistentes, lo que ayuda un poquito.) – foo