Menu
Coddy logo textTech

toString()-Methode

Teil des Abschnitts Objektorientierte Programmierung der Java-Journey von Coddy — Lektion 41 von 87.

Jede Klasse in Java erbt von der Object-Klasse, die mehrere nützliche Methoden bereitstellt. Eine der am häufigsten überschriebenen ist toString(), die eine String-Repräsentation eines Objekts zurückgibt.

Standardmäßig gibt toString() den Klassennamen gefolgt vom Hash-Code des Objekts zurück, was nicht sehr hilfreich ist:

public class Person {
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

Person p = new Person("Alice", 25);
System.out.println(p);  // Person@15db9742

Durch das Überschreiben von toString() können Sie eine aussagekräftige Ausgabe bereitstellen, die den Zustand des Objekts beschreibt:

public class Person {
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    @Override
    public String toString() {
        return "Person[name=" + name + ", age=" + age + "]";
    }
}

Person p = new Person("Alice", 25);
System.out.println(p);  // Person[name=Alice, age=25]

Die Methode toString() wird automatisch aufgerufen, wenn Sie ein Objekt ausgeben oder es mit einer Zeichenfolge verknüpfen. Dies macht das Debugging viel einfacher, da Sie den Inhalt eines Objekts schnell sehen können, ohne zusätzlichen Code schreiben zu müssen.

challenge icon

Aufgabe

Einfach

Lassen Sie uns ein Produktinventarsystem erstellen, das mithilfe benutzerdefinierter toString()-Implementierungen aussagekräftige Informationen über Artikel anzeigt. Sie werden eine Product-Klasse erstellen, die die standardmäßige toString()-Methode überschreibt, um eine klare, lesbare Darstellung jedes Produkts zu liefern.

Sie werden Ihren Code auf zwei Dateien verteilen:

  • Product.java: Erstellen Sie eine Klasse, die einen Inventarartikel darstellt. Jedes Product hat drei private Felder: name (String), price (double) und quantity (int). Fügen Sie einen Konstruktor hinzu, der alle drei Felder initialisiert. Überschreiben Sie die toString()-Methode, um einen formatierten String in genau diesem Format zurückzugeben: Product[name=X, price=Y, quantity=Z], wobei X, Y und Z die tatsächlichen Feldwerte sind. Der Preis sollte als einfache Zahl angezeigt werden (keine spezielle Formatierung erforderlich).
  • Main.java: Erwecken Sie Ihre Product-Klasse zum Leben, indem Sie Produkte erstellen und anzeigen. Sie erhalten drei Eingaben: einen Produktnamen (String), einen Preis (double) und eine Menge (int). Erstellen Sie ein Product mit diesen Werten und geben Sie das Produktobjekt dann einfach direkt mit System.out.println() aus. Dank Ihrer überschriebenen toString()-Methode wird dies automatisch die formatierten Produktinformationen anstelle der kryptischen Standardausgabe anzeigen!

Sie erhalten drei Eingaben: den Produktnamen (String), den Preis (double) und die Menge (int).

Beachten Sie, wie das direkte Drucken des Objekts automatisch Ihre toString()-Methode aufruft – das ist es, was das Debugging und Logging in realen Anwendungen so viel einfacher macht!

Spickzettel

Jede Klasse in Java erbt von der Object-Klasse. Die toString()-Methode gibt eine String-Repräsentation eines Objekts zurück.

Standardmäßig gibt toString() den Klassennamen gefolgt vom Hash-Code des Objekts zurück:

Person p = new Person("Alice", 25);
System.out.println(p);  // Person@15db9742

Überschreiben Sie toString(), um eine aussagekräftige Ausgabe zu erhalten:

@Override
public String toString() {
    return "Person[name=" + name + ", age=" + age + "]";
}

Person p = new Person("Alice", 25);
System.out.println(p);  // Person[name=Alice, age=25]

Die toString()-Methode wird automatisch aufgerufen, wenn Sie ein Objekt ausgeben oder es mit einem String verketten.

Probier es selbst

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Eingaben lesen
        String name = scanner.nextLine();
        double price = scanner.nextDouble();
        int quantity = scanner.nextInt();
        
        // TODO: Erstelle ein Product-Objekt mit den Eingabewerten
        
        // TODO: Gib das Product-Objekt direkt aus
        // (Dies wird automatisch deine toString()-Methode aufrufen!)
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Objektorientierte Programmierung