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)
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);
}