Sobes.tech
Junior

Wofür werden die Methoden equals() und toString() in Java verwendet?

sobes.tech KI

Antwort von AI

Die Methode equals() wird verwendet, um Objekte auf logische Äquivalenz zu vergleichen, das heißt, sie bestimmt, ob zwei Objekte denselben Wert oder dieselbe Entität darstellen, unabhängig davon, ob sie physisch dasselbe Objekt im Speicher sind.

Die Methode toString() wird verwendet, um eine stringbasierte Darstellung des Objekts zu erhalten. Standardmäßig gibt sie eine Zeichenkette zurück, die den Klassennamen und ihren Hash-Code enthält, aber sie wird häufig überschrieben, um eine informativere Beschreibung des Objektzustands bereitzustellen.

public class ExampleObject {
    private int id;
    private String name;

    public ExampleObject(int id, String name) {
        this.id = id;
        this.name = name;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true; // Referenzvergleich
        if (o == null || getClass() != o.getClass()) return false; // Typ- und null-Check
        ExampleObject that = (ExampleObject) o; // Typumwandlung
        return id == that.id && // Vergleich der bedeutungsvollen Felder
               name.equals(that.name);
    }

    @Override
    public int hashCode() {
        // Überschreiben von hashCode ist bei Überschreiben von equals erforderlich
        return Objects.hash(id, name);
    }

    @Override
    public String toString() {
        return "ExampleObject{" +
               "id=" + id +
               ", name='" + name + '\'' +
               '}';
    }

    public static void main(String[] args) {
        ExampleObject obj1 = new ExampleObject(1, "Test");
        ExampleObject obj2 = new ExampleObject(1, "Test");
        ExampleObject obj3 = new ExampleObject(2, "Another");

        // Verwendung von equals()
        System.out.println("obj1 equals obj2: " + obj1.equals(obj2)); // true - logisch äquivalent
        System.out.println("obj1 equals obj3: " + obj1.equals(obj3)); // false - unterschiedliche Objekte

        // Verwendung von toString()
        System.out.println("obj1 toString(): " + obj1.toString()); // Gibt die stringrepräsentation des Objekts aus
    }
}