Método toString()
Cómo imprimir fácilmente un objeto
Para mostrar todos los datos de un objeto utilizando el comando System.out.println(object); en Java, existe un método llamado toString();.
toString()
El método toString en Java es un método incorporado que pertenece a la clase Object. Se utiliza para devolver una representación en forma de cadena de un objeto. Por defecto, cuando llamamos a toString en un objeto, devuelve una cadena que contiene el nombre de la clase seguido del hashcode del objeto.
Veamos el ejemplo:
Main.java
1234567891011121314151617181920package com.example; class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } } public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); System.out.println(bob); } }
HashCode
Un hashcode, en términos simples, es un identificador único para un objeto que se almacena en memoria. También podemos ver el hash code de un objeto llamando al método hashCode() sobre él, por ejemplo:
Main.java
123456789101112131415161718192021package com.example; class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } } public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); int code = bob.hashCode(); System.out.println(code); } }
En este caso, surge la pregunta: ¿cómo podemos obtener algo más específico en lugar del código hash de un objeto? Para estos casos, podemos sobrescribir el método toString().
Herencia y sobrescritura de métodos son temas extensos que estudiaremos en un curso aparte. Por ahora, utilizaremos la sobrescritura de métodos solo para el método toString().
Cómo usar toString()
Para sobrescribir un método, necesitamos utilizar la siguiente sintaxis:
Main.java
1234@Override public String toString() { // block of code }
Utilizamos la anotación @Override antes de este método. Con esta anotación, el compilador reconoce que estamos sobrescribiendo este método. A continuación, especificamos la sintaxis public String toString(), indicando exactamente qué método estamos sobrescribiendo.
En el cuerpo de este método, definiremos cómo debe representarse nuestro objeto como una cadena. Vamos a sobrescribir el método para la clase Person:
Person.java
12345678910111213141516171819class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } @Override public String toString() { return "Class Person;" + System.lineSeparator() + "name = " + name + ";" + System.lineSeparator() + "age = " + age + ";" + System.lineSeparator() + "gender = " + gender + "."; } }
El comando System.lineSeparator() se utiliza para crear una nueva línea.
Hemos definido cómo debe mostrarse nuestro objeto concatenando cadenas con sus valores. Por lo tanto, cuando intentemos imprimir un objeto de la clase Person, veremos información detallada sobre cada campo.
Mostremos un objeto utilizando el método main y veamos cómo se visualiza:
Main.java
12345678910111213141516171819202122232425262728package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); System.out.println(bob); } } class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } @Override public String toString() { return "Class Person;" + System.lineSeparator() + "name = " + name + ";" + System.lineSeparator() + "age = " + age + ";" + System.lineSeparator() + "gender = " + gender + "."; } }
Hemos obtenido información sobre la clase a la que pertenece el objeto bob y detalles sobre todos sus campos.
De este modo, podemos sobrescribir y definir el método toString() para mostrar la información deseada al imprimir un objeto. Vamos a crear otro objeto de esta clase utilizando el constructor para observar y reforzar cómo el método toString() transforma el objeto:
Main.java
123456789101112131415161718192021222324252627282930package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); System.out.println(bob); Person alice = new Person("Alice", 17, "female"); System.out.println(alice); } } class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } @Override public String toString() { return "Class Person;" + System.lineSeparator() + "name = " + name + ";" + System.lineSeparator() + "age = " + age + ";" + System.lineSeparator() + "gender = " + gender + "." + System.lineSeparator(); } }
Podemos observar que el nuevo objeto alice se muestra en la consola utilizando la misma plantilla.
Conclusión
Al utilizar el método toString(), hemos simplificado en gran medida el proceso de mostrar la información de un objeto en pantalla, permitiéndonos ahorrar espacio en el método principal.
1. ¿Por qué necesitamos el método toString()?
2. ¿Qué anotación debe usarse encima del método toString()?
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Can you show an example of how to override the toString() method in a class?
What happens if I don't override the toString() method?
Can you explain more about method overriding and inheritance?
Awesome!
Completion rate improved to 2.63
Método toString()
Desliza para mostrar el menú
Cómo imprimir fácilmente un objeto
Para mostrar todos los datos de un objeto utilizando el comando System.out.println(object); en Java, existe un método llamado toString();.
toString()
El método toString en Java es un método incorporado que pertenece a la clase Object. Se utiliza para devolver una representación en forma de cadena de un objeto. Por defecto, cuando llamamos a toString en un objeto, devuelve una cadena que contiene el nombre de la clase seguido del hashcode del objeto.
Veamos el ejemplo:
Main.java
1234567891011121314151617181920package com.example; class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } } public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); System.out.println(bob); } }
HashCode
Un hashcode, en términos simples, es un identificador único para un objeto que se almacena en memoria. También podemos ver el hash code de un objeto llamando al método hashCode() sobre él, por ejemplo:
Main.java
123456789101112131415161718192021package com.example; class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } } public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); int code = bob.hashCode(); System.out.println(code); } }
En este caso, surge la pregunta: ¿cómo podemos obtener algo más específico en lugar del código hash de un objeto? Para estos casos, podemos sobrescribir el método toString().
Herencia y sobrescritura de métodos son temas extensos que estudiaremos en un curso aparte. Por ahora, utilizaremos la sobrescritura de métodos solo para el método toString().
Cómo usar toString()
Para sobrescribir un método, necesitamos utilizar la siguiente sintaxis:
Main.java
1234@Override public String toString() { // block of code }
Utilizamos la anotación @Override antes de este método. Con esta anotación, el compilador reconoce que estamos sobrescribiendo este método. A continuación, especificamos la sintaxis public String toString(), indicando exactamente qué método estamos sobrescribiendo.
En el cuerpo de este método, definiremos cómo debe representarse nuestro objeto como una cadena. Vamos a sobrescribir el método para la clase Person:
Person.java
12345678910111213141516171819class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } @Override public String toString() { return "Class Person;" + System.lineSeparator() + "name = " + name + ";" + System.lineSeparator() + "age = " + age + ";" + System.lineSeparator() + "gender = " + gender + "."; } }
El comando System.lineSeparator() se utiliza para crear una nueva línea.
Hemos definido cómo debe mostrarse nuestro objeto concatenando cadenas con sus valores. Por lo tanto, cuando intentemos imprimir un objeto de la clase Person, veremos información detallada sobre cada campo.
Mostremos un objeto utilizando el método main y veamos cómo se visualiza:
Main.java
12345678910111213141516171819202122232425262728package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); System.out.println(bob); } } class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } @Override public String toString() { return "Class Person;" + System.lineSeparator() + "name = " + name + ";" + System.lineSeparator() + "age = " + age + ";" + System.lineSeparator() + "gender = " + gender + "."; } }
Hemos obtenido información sobre la clase a la que pertenece el objeto bob y detalles sobre todos sus campos.
De este modo, podemos sobrescribir y definir el método toString() para mostrar la información deseada al imprimir un objeto. Vamos a crear otro objeto de esta clase utilizando el constructor para observar y reforzar cómo el método toString() transforma el objeto:
Main.java
123456789101112131415161718192021222324252627282930package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); System.out.println(bob); Person alice = new Person("Alice", 17, "female"); System.out.println(alice); } } class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } @Override public String toString() { return "Class Person;" + System.lineSeparator() + "name = " + name + ";" + System.lineSeparator() + "age = " + age + ";" + System.lineSeparator() + "gender = " + gender + "." + System.lineSeparator(); } }
Podemos observar que el nuevo objeto alice se muestra en la consola utilizando la misma plantilla.
Conclusión
Al utilizar el método toString(), hemos simplificado en gran medida el proceso de mostrar la información de un objeto en pantalla, permitiéndonos ahorrar espacio en el método principal.
1. ¿Por qué necesitamos el método toString()?
2. ¿Qué anotación debe usarse encima del método toString()?
¡Gracias por tus comentarios!