A veces el java me desconcierta.
Tengo que hacer una gran cantidad de inicializaciones int.
¿Cuál es la diferencia real?
Integer.toString(i)
nuevo Integer(i).toString()
Integer.toString
llama al método estático de la clase Integer
. No necesita una instancia de Integer
.
Si llamas a new Integer(i)
creas una instancia de tipo Integer
, que es un objeto Java completo que encapsula el valor de tu int. Entonces llamas al método toString
para pedirle que te devuelva una representación de cadena de su nombre.
Si todo lo que quieres es imprimir un int
, usarás el primero porque es más ligero, más rápido y no usa memoria extra (aparte de la cadena devuelta).
Si quiere un objeto que represente un valor entero -para ponerlo dentro de una colección, por ejemplo- utilizará el segundo, ya que le proporciona un objeto completo para hacer todo tipo de cosas que no puede hacer con un int
.
new Integer(i).toString()
crea primero un objeto envolvente (redundante) alrededor de i
(que a su vez puede ser un objeto envolvente Integer
).
Se prefiere Integer.toString(i)
porque no crea ningún objeto innecesario.
new Integer(i).toString();
Esta sentencia crea el objeto Integer y luego llama a sus métodos toString(i)
para devolver la representación en cadena del valor de Integer's.
Integer.toString(i);
Devuelve el objeto String que representa el int (entero)** específico, pero aquí toString(int)
es un método estático
.
El resumen es que en el primer caso devuelve la representación en cadena del objeto, mientras que en el segundo caso devuelve la representación en cadena del entero.