variable tipo java tostring

tipo - object[] en java



¿Se llama toString para tipos primitivos también? (4)

Sé que se llama a toString en Java cada vez que imprimimos un objeto, y eso está definido por defecto en la clase Object que es superclase de todas las clases.

Pero, mis profesores dicen que toString también se llama cuando imprimimos algún primitive type ( int, char etc.).

Es eso cierto ?


Las primitivas son puestas en autobox a su tipo de objeto respectivo. Así que toString() llamará.


Sí, pero no en el sentido de que esperas que sea.

System.out.println(someInt)

es solo una envoltura para print que también agrega una línea.

System.out.print(someInt)

calls

String.valueOf(someInt)

que a su vez calls

Integer.toString(someInt)

que es un método estático en la clase Integer que devuelve un objeto String que representa el entero especificado . Este método no es lo mismo que Integer#toString() , un método de instancia que transforma su objeto Integer en una cadena que representa su valor int.

someInt.toString() no funcionará, ya que someInt no extiende el Object debido a que no es un objeto.


Si consideras seguir el código

System.out.println(5);

Lo siguiente sucederá

public void println(int x) { synchronized (this) { print(x); newLine(); } }

Se PrintStream a la función de la clase PrintStream , la cual llamará internamente a la función print(x) siguiente manera:

public void print(int i) { write(String.valueOf(i)); }

y ahora si ves la función valueOf () en la clase String

public static String valueOf(int i) { return Integer.toString(i); }

y

Integer.toString(i) es lo que quiso decir tu maestro al llamar al método toString ().


Veamos cómo funciona System.out.print(int) . Según System API System.out es un PrintStream :

public static final PrintStream out

En PrintStream src podemos ver cómo imprime ints:

public void print(int i) { write(String.valueOf(i)); }

Y esto es String.valueOf(int) de String src:

public static String valueOf(int i) { return Integer.toString(i); }