System.out.println(myObject); // myObject@b815859
Die etwas kryptische Ausgabe resultiert daraus, dass diese der Routine
getClass().getName() + "@" + Integer.toHexString(hashCode());
entspringt. Das heißt somit, dass die PrintStream-Ausgabe eines Objektes per print() oder println()
lediglich aus dessen Namen (mit Package-Angabe) und dessen Hash-Repräsentation getrennt durch ein '@' besteht.Dies lässt sich durch Überschreiben in eine persönlich nützlichere Form ändern:
public class ToStringUeberschreiben {
private String s = "Hallo Welt!";
private int i = 10;
public static final double pi = 3.14;
public static void main(String[] args) {
System.out.println(new ToStringUeberschreiben());
}
public String toString(){
return this.s + " | " + this.i + " | " + pi;
}
}
Hier wird die Methode toString() neu implementiert, indem eine Ausgabe der Members der Klasse eingerichtet wird.
Die Tatsache, dass die Methode nicht explizit aufgerufen wird zeigt, dass dies als Standard-Routine im Hintergrund geschieht.
private String s = "Hallo Welt!";
private int i = 10;
public static final double pi = 3.14;
public static void main(String[] args) {
System.out.println(new ToStringUeberschreiben());
}
public String toString(){
return this.s + " | " + this.i + " | " + pi;
}
}