Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Metodo ToString() | Classi
Java Avanzato

bookMetodo ToString()

Come stampare facilmente un oggetto

Per visualizzare tutti i dati di un oggetto utilizzando il comando System.out.println(object); in Java, esiste un metodo chiamato toString();.

toString()

Il metodo toString in Java è un metodo integrato che appartiene alla classe Object. Viene utilizzato per restituire una rappresentazione testuale di un oggetto. Per impostazione predefinita, quando chiamiamo toString su un oggetto, restituisce una stringa che contiene il nome della classe seguito dall'hashcode dell'oggetto. Vediamo l'esempio:

Main.java

Main.java

copy
1234567891011121314151617181920
package 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, in termini semplici, è un identificatore univoco per un oggetto che viene memorizzato in memoria. Possiamo anche visualizzare il codice hash di un oggetto chiamando il metodo hashCode() su di esso, ad esempio:

Main.java

Main.java

copy
123456789101112131415161718192021
package 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); } }

In questo caso, sorge la domanda: come possiamo ottenere qualcosa di più specifico invece dell'hash code di un oggetto? Per tali situazioni, è possibile sovrascrivere il metodo toString().

Ereditarietà e sovrascrittura dei metodi sono argomenti approfonditi che verranno trattati in un corso separato. Per ora, utilizzeremo la sovrascrittura dei metodi solo per il metodo toString().

Come utilizzare toString()

Per sovrascrivere un metodo, è necessario utilizzare la seguente sintassi:

Main.java

Main.java

copy
1234
@Override public String toString() { // block of code }

Utilizziamo l'annotazione @Override prima di questo metodo. Con questa annotazione, il compilatore riconosce che stiamo sovrascrivendo questo metodo. Successivamente, specifichiamo la sintassi public String toString(), indicando quale metodo esattamente stiamo sovrascrivendo.

Nel corpo di questo metodo, definiamo come il nostro oggetto deve essere rappresentato come stringa. Sovrascriviamo il metodo per la classe Person:

Person.java

Person.java

copy
12345678910111213141516171819
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 + "."; } }

Il comando System.lineSeparator() viene utilizzato per creare una nuova riga. Abbiamo definito come il nostro oggetto deve apparire concatenando stringhe con i relativi valori. Pertanto, quando proviamo a stampare un oggetto della classe Person, vedremo informazioni dettagliate su ciascun campo. Visualizziamo un oggetto utilizzando il metodo main e osserviamo il risultato:

Main.java

Main.java

copy
12345678910111213141516171819202122232425262728
package 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 + "."; } }

Abbiamo ottenuto informazioni sulla classe a cui appartiene l'oggetto bob e dettagli su tutti i suoi campi. Pertanto, è possibile sovrascrivere e definire il metodo toString() per visualizzare le informazioni desiderate durante la stampa di un oggetto. Creiamo un altro oggetto di questa classe utilizzando il costruttore per osservare e rafforzare come il metodo toString() trasforma l'oggetto:

Main.java

Main.java

copy
123456789101112131415161718192021222324252627282930
package 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(); } }

Possiamo osservare che il nuovo oggetto alice viene visualizzato nella console utilizzando lo stesso modello.

Conclusione

Utilizzando il metodo toString(), abbiamo notevolmente semplificato il processo di visualizzazione delle informazioni sugli oggetti a schermo, permettendoci di risparmiare spazio nel metodo main.

1. Perché abbiamo bisogno del metodo toString()?

2. Quale annotazione dovrebbe essere utilizzata sopra il metodo toString()?

question mark

Perché abbiamo bisogno del metodo toString()?

Select the correct answer

question mark

Quale annotazione dovrebbe essere utilizzata sopra il metodo toString()?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 8

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Awesome!

Completion rate improved to 2.63

bookMetodo ToString()

Scorri per mostrare il menu

Come stampare facilmente un oggetto

Per visualizzare tutti i dati di un oggetto utilizzando il comando System.out.println(object); in Java, esiste un metodo chiamato toString();.

toString()

Il metodo toString in Java è un metodo integrato che appartiene alla classe Object. Viene utilizzato per restituire una rappresentazione testuale di un oggetto. Per impostazione predefinita, quando chiamiamo toString su un oggetto, restituisce una stringa che contiene il nome della classe seguito dall'hashcode dell'oggetto. Vediamo l'esempio:

Main.java

Main.java

copy
1234567891011121314151617181920
package 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, in termini semplici, è un identificatore univoco per un oggetto che viene memorizzato in memoria. Possiamo anche visualizzare il codice hash di un oggetto chiamando il metodo hashCode() su di esso, ad esempio:

Main.java

Main.java

copy
123456789101112131415161718192021
package 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); } }

In questo caso, sorge la domanda: come possiamo ottenere qualcosa di più specifico invece dell'hash code di un oggetto? Per tali situazioni, è possibile sovrascrivere il metodo toString().

Ereditarietà e sovrascrittura dei metodi sono argomenti approfonditi che verranno trattati in un corso separato. Per ora, utilizzeremo la sovrascrittura dei metodi solo per il metodo toString().

Come utilizzare toString()

Per sovrascrivere un metodo, è necessario utilizzare la seguente sintassi:

Main.java

Main.java

copy
1234
@Override public String toString() { // block of code }

Utilizziamo l'annotazione @Override prima di questo metodo. Con questa annotazione, il compilatore riconosce che stiamo sovrascrivendo questo metodo. Successivamente, specifichiamo la sintassi public String toString(), indicando quale metodo esattamente stiamo sovrascrivendo.

Nel corpo di questo metodo, definiamo come il nostro oggetto deve essere rappresentato come stringa. Sovrascriviamo il metodo per la classe Person:

Person.java

Person.java

copy
12345678910111213141516171819
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 + "."; } }

Il comando System.lineSeparator() viene utilizzato per creare una nuova riga. Abbiamo definito come il nostro oggetto deve apparire concatenando stringhe con i relativi valori. Pertanto, quando proviamo a stampare un oggetto della classe Person, vedremo informazioni dettagliate su ciascun campo. Visualizziamo un oggetto utilizzando il metodo main e osserviamo il risultato:

Main.java

Main.java

copy
12345678910111213141516171819202122232425262728
package 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 + "."; } }

Abbiamo ottenuto informazioni sulla classe a cui appartiene l'oggetto bob e dettagli su tutti i suoi campi. Pertanto, è possibile sovrascrivere e definire il metodo toString() per visualizzare le informazioni desiderate durante la stampa di un oggetto. Creiamo un altro oggetto di questa classe utilizzando il costruttore per osservare e rafforzare come il metodo toString() trasforma l'oggetto:

Main.java

Main.java

copy
123456789101112131415161718192021222324252627282930
package 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(); } }

Possiamo osservare che il nuovo oggetto alice viene visualizzato nella console utilizzando lo stesso modello.

Conclusione

Utilizzando il metodo toString(), abbiamo notevolmente semplificato il processo di visualizzazione delle informazioni sugli oggetti a schermo, permettendoci di risparmiare spazio nel metodo main.

1. Perché abbiamo bisogno del metodo toString()?

2. Quale annotazione dovrebbe essere utilizzata sopra il metodo toString()?

question mark

Perché abbiamo bisogno del metodo toString()?

Select the correct answer

question mark

Quale annotazione dovrebbe essere utilizzata sopra il metodo toString()?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 8
some-alt