Originariamente inviato da maurymg
Ascolta però in realtà non si trasforma in stringa..
questo codice non stampa "ciao a tutti",stampa solo un indirizzo...
L'obiettivo di toString() è quello di fornire una descrizione testuale di un oggetto.
toString() è un metodo definito in Object, quindi è ereditato da qualunque classe (compresi gli array, che derivano da Object). Il toString() in Object si limita a restituire una stringa formata dal nome della classe, poi un @ poi un valore che è l'hash code dell'oggetto. Non può fare granché altro ... a quel livello, cioè in Object, non è possibile sapere null'altro di particolare o più specifico sull'oggetto.
In una qualunque sottoclasse di Object è quindi possibile (e consigliato) ridefinire il toString() per fornire una descrizione più consona e accurata dell'oggetto. Quale sia una descrizione più "consona" ovviamente dipende dal significato e dal contenuto della classe!
Per String ... guarda caso è l'oggetto String stesso, per StringBuffer è un String con il contenuto del buffer, per Integer è la rappresentazione testuale del numero. Per altre classi del framework dipende .... basta leggere la documentazione.
Per le classi che uno definisce per conto suo, chiaramente si può stabilire quello che si vuole. Esempio: una classe Persona che contiene i campi nome e cognome. Quale può essere una "buona" rappresentazione testuale dell'oggetto? Direi ad esempio una stringa con cognome poi spazio poi nome!
codice:
public class Persona {
private String nome;
private String cognome;
public Persona (String nome, String cognome) { ..... copia nei campi ..... }
public String toString () {
return cognome + " " + nome;
}
}