Intellij Java-Klasse mit Attributen angelegt. Ein Objekt auslesen?
Gemäß dem Betreff möchte ich ein Objekt das ich von einer Klasse erzeugt per System.out.println(...) auslesen. Setzte ich hier mein erzeugtes Objekt ein erhalte ich folgende Informationen:
Simons_Lections_17_3_23_GrundlagenKlassen.ExampleClass@1b28cdfa
Dies ist der packageName.Klassenname. und @1b28cdfa
Für was steht/bedeutet dieses @1b28cdfa?
Wie kann ich mein Objekt mit seinen Attributen per System.out.println(...) auslesen?
2 Antworten
Hallo,
Das @1b28cdfa ist die Hash-Code des Objekts, der von der hashCode() Methode der Klasse Object zurückgegeben wird. Es ist eine Zahl, die das Objekt identifiziert.
Um ein Objekt mit seinen Attributen per System.out.println(...) auszulesen, musst du die toString() Methode der Klasse überschreiben. Diese Methode gibt eine Zeichenfolge zurück, die das Objekt beschreibt.
Zum Beispiel:
public class ExampleClass {
private String name;
private int age;
public ExampleClass(String name, int age) {
this.name = name;
this.age = age;
}
// Überschreiben der toString() Methode
public String toString() {
return "ExampleClass[name=" + name + ", age=" + age + "]";
}
}
// Erzeugen eines Objekts
ExampleClass obj = new ExampleClass("Simon", 25);
// Auslesen des Objekts
System.out.println(obj); // Gibt ExampleClass[name=Simon, age=25] aus
hier zum nachlesen:
arrays - printing out attributes of multiple objects in java - Stack Overflow
java - Printing all variables value from a class - Stack Overflow
java - How to print an attribute of an object? - Stack Overflow
Für was steht/bedeutet dieses @1b28cdfa?
Das ist ein Hash des Objektes, um es identifizieren zu können.
Wie kann ich mein Objekt mit seinen Attributen per System.out.println(...) auslesen?
Du müsstest dafür in deiner Klasse selbst die toString-Methode überschreiben und somit selbst festlegen, was ausgegeben werden soll
Ein Hash eines Objekts ist eine numerische Darstellung des Inhalts des Objekts. Er wird von der hashCode() Methode der Klasse Object berechnet. Er dient dem Nutzen von Hash-Tabellen wie HashMap oder HashSet.
Der Hash eines Objekts hängt von den Attributen des Objekts ab. Er sollte so gestaltet sein, dass er möglichst eindeutig ist und sich nicht oft ändert. Er sollte auch konsistent mit der equals() Methode sein, das heißt, zwei gleiche Objekte sollten den gleichen Hash haben.
Und was ist ein Hash des Objektes?
Ein Hash ist prinziell eine Abbildung. Eine Hashfunktion bildet eine große Menge auf eine kleine, beschränktere Menge ab. Wie gesagt, es dient zur Identifikation des Objektes.
Wenn du z.B. die Klasse "Auto" hast und davon zwei verschiedene Objekte (z.B. ein blauer Audi und ein roter Porsche) erstellst, werden diese einen unterschiedlichen Hash haben
Und was ist ein Hash des Objektes?