Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Methode ToString() | Klassen
Java Erweitert

bookMethode ToString()

Einfaches Ausgeben eines Objekts

Um alle Daten eines Objekts mit dem Befehl System.out.println(object); in Java anzuzeigen, gibt es eine Methode namens toString();.

toString()

Die toString-Methode in Java ist eine eingebaute Methode, die zur Object-Klasse gehört. Sie dient dazu, eine String-Repräsentation eines Objekts zurückzugeben. Standardmäßig gibt toString beim Aufruf auf einem Objekt einen String zurück, der den Klassennamen gefolgt vom Hashcode des Objekts enthält. Betrachten wir das folgende Beispiel:

Main.java

Main.java

copy
1234567891011121314151617181920
package com.example; class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } } public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); System.out.println(bob); } }

HashCode

Ein Hashcode ist einfach ausgedrückt ein eindeutiger Bezeichner für ein Objekt, das im Speicher abgelegt ist. Den Hashcode eines Objekts kann man auch sehen, indem man die Methode hashCode() darauf aufruft, zum Beispiel:

Main.java

Main.java

copy
123456789101112131415161718192021
package com.example; class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } } public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); int code = bob.hashCode(); System.out.println(code); } }

In diesem Fall stellt sich die Frage: Wie kann eine spezifischere Information anstelle des Hash-Codes eines Objekts erhalten werden? Für solche Fälle kann die Methode toString() überschrieben werden.

Vererbung und Methodenüberschreibung sind umfassende Themen, die in einem separaten Kurs behandelt werden. Vorerst wird die Methodenüberschreibung ausschließlich für die Methode toString() verwendet.

Verwendung von toString()

Um eine Methode zu überschreiben, ist folgende Syntax zu verwenden:

Main.java

Main.java

copy
1234
@Override public String toString() { // block of code }

Vor dieser Methode verwenden wir die Annotation @Override. Mit dieser Annotation erkennt der Compiler, dass wir diese Methode überschreiben. Anschließend geben wir die Syntax public String toString() an, um festzulegen, welche Methode wir genau überschreiben.

Im Rumpf dieser Methode definieren wir, wie unser Objekt als Zeichenkette dargestellt werden soll. Überschreiben wir die Methode für die Klasse Person:

Person.java

Person.java

copy
12345678910111213141516171819
class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } @Override public String toString() { return "Class Person;" + System.lineSeparator() + "name = " + name + ";" + System.lineSeparator() + "age = " + age + ";" + System.lineSeparator() + "gender = " + gender + "."; } }

Der Befehl System.lineSeparator() wird verwendet, um einen Zeilenumbruch zu erzeugen. Wir haben festgelegt, wie unser Objekt erscheinen soll, indem wir Zeichenketten mit ihren Werten verknüpfen. Daher sehen wir beim Ausgeben eines Objekts der Klasse Person detaillierte Informationen zu jedem Feld. Geben wir ein Objekt mit der main-Methode aus und sehen uns das Ergebnis an:

Main.java

Main.java

copy
12345678910111213141516171819202122232425262728
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); System.out.println(bob); } } class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } @Override public String toString() { return "Class Person;" + System.lineSeparator() + "name = " + name + ";" + System.lineSeparator() + "age = " + age + ";" + System.lineSeparator() + "gender = " + gender + "."; } }

Wir haben Informationen über die Klasse erhalten, zu der das Objekt bob gehört, sowie Details zu allen seinen Feldern. Daher können wir die Methode toString() überschreiben und definieren, um beim Ausgeben eines Objekts die gewünschten Informationen anzuzeigen. Erstellen wir ein weiteres Objekt dieser Klasse mit dem Konstruktor, um zu sehen und zu verdeutlichen, wie die Methode toString() das Objekt transformiert:

Main.java

Main.java

copy
123456789101112131415161718192021222324252627282930
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); System.out.println(bob); Person alice = new Person("Alice", 17, "female"); System.out.println(alice); } } class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } @Override public String toString() { return "Class Person;" + System.lineSeparator() + "name = " + name + ";" + System.lineSeparator() + "age = " + age + ";" + System.lineSeparator() + "gender = " + gender + "." + System.lineSeparator(); } }

Wir sehen, dass das neue Objekt alice in der Konsole mit derselben Vorlage angezeigt wird.

Fazit

Durch die Verwendung der toString()-Methode haben wir den Prozess der Anzeige von Objektinformationen auf dem Bildschirm erheblich vereinfacht und können so Platz in der Hauptmethode sparen.

1. Warum benötigen wir die toString()-Methode?

2. Welche Annotation sollte über der toString()-Methode verwendet werden?

question mark

Warum benötigen wir die toString()-Methode?

Select the correct answer

question mark

Welche Annotation sollte über der toString()-Methode verwendet werden?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 8

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Suggested prompts:

Can you show an example of how to override the toString() method in a class?

What happens if I don't override the toString() method?

Can you explain more about method overriding and inheritance?

Awesome!

Completion rate improved to 2.63

bookMethode ToString()

Swipe um das Menü anzuzeigen

Einfaches Ausgeben eines Objekts

Um alle Daten eines Objekts mit dem Befehl System.out.println(object); in Java anzuzeigen, gibt es eine Methode namens toString();.

toString()

Die toString-Methode in Java ist eine eingebaute Methode, die zur Object-Klasse gehört. Sie dient dazu, eine String-Repräsentation eines Objekts zurückzugeben. Standardmäßig gibt toString beim Aufruf auf einem Objekt einen String zurück, der den Klassennamen gefolgt vom Hashcode des Objekts enthält. Betrachten wir das folgende Beispiel:

Main.java

Main.java

copy
1234567891011121314151617181920
package com.example; class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } } public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); System.out.println(bob); } }

HashCode

Ein Hashcode ist einfach ausgedrückt ein eindeutiger Bezeichner für ein Objekt, das im Speicher abgelegt ist. Den Hashcode eines Objekts kann man auch sehen, indem man die Methode hashCode() darauf aufruft, zum Beispiel:

Main.java

Main.java

copy
123456789101112131415161718192021
package com.example; class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } } public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); int code = bob.hashCode(); System.out.println(code); } }

In diesem Fall stellt sich die Frage: Wie kann eine spezifischere Information anstelle des Hash-Codes eines Objekts erhalten werden? Für solche Fälle kann die Methode toString() überschrieben werden.

Vererbung und Methodenüberschreibung sind umfassende Themen, die in einem separaten Kurs behandelt werden. Vorerst wird die Methodenüberschreibung ausschließlich für die Methode toString() verwendet.

Verwendung von toString()

Um eine Methode zu überschreiben, ist folgende Syntax zu verwenden:

Main.java

Main.java

copy
1234
@Override public String toString() { // block of code }

Vor dieser Methode verwenden wir die Annotation @Override. Mit dieser Annotation erkennt der Compiler, dass wir diese Methode überschreiben. Anschließend geben wir die Syntax public String toString() an, um festzulegen, welche Methode wir genau überschreiben.

Im Rumpf dieser Methode definieren wir, wie unser Objekt als Zeichenkette dargestellt werden soll. Überschreiben wir die Methode für die Klasse Person:

Person.java

Person.java

copy
12345678910111213141516171819
class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } @Override public String toString() { return "Class Person;" + System.lineSeparator() + "name = " + name + ";" + System.lineSeparator() + "age = " + age + ";" + System.lineSeparator() + "gender = " + gender + "."; } }

Der Befehl System.lineSeparator() wird verwendet, um einen Zeilenumbruch zu erzeugen. Wir haben festgelegt, wie unser Objekt erscheinen soll, indem wir Zeichenketten mit ihren Werten verknüpfen. Daher sehen wir beim Ausgeben eines Objekts der Klasse Person detaillierte Informationen zu jedem Feld. Geben wir ein Objekt mit der main-Methode aus und sehen uns das Ergebnis an:

Main.java

Main.java

copy
12345678910111213141516171819202122232425262728
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); System.out.println(bob); } } class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } @Override public String toString() { return "Class Person;" + System.lineSeparator() + "name = " + name + ";" + System.lineSeparator() + "age = " + age + ";" + System.lineSeparator() + "gender = " + gender + "."; } }

Wir haben Informationen über die Klasse erhalten, zu der das Objekt bob gehört, sowie Details zu allen seinen Feldern. Daher können wir die Methode toString() überschreiben und definieren, um beim Ausgeben eines Objekts die gewünschten Informationen anzuzeigen. Erstellen wir ein weiteres Objekt dieser Klasse mit dem Konstruktor, um zu sehen und zu verdeutlichen, wie die Methode toString() das Objekt transformiert:

Main.java

Main.java

copy
123456789101112131415161718192021222324252627282930
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); System.out.println(bob); Person alice = new Person("Alice", 17, "female"); System.out.println(alice); } } class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } @Override public String toString() { return "Class Person;" + System.lineSeparator() + "name = " + name + ";" + System.lineSeparator() + "age = " + age + ";" + System.lineSeparator() + "gender = " + gender + "." + System.lineSeparator(); } }

Wir sehen, dass das neue Objekt alice in der Konsole mit derselben Vorlage angezeigt wird.

Fazit

Durch die Verwendung der toString()-Methode haben wir den Prozess der Anzeige von Objektinformationen auf dem Bildschirm erheblich vereinfacht und können so Platz in der Hauptmethode sparen.

1. Warum benötigen wir die toString()-Methode?

2. Welche Annotation sollte über der toString()-Methode verwendet werden?

question mark

Warum benötigen wir die toString()-Methode?

Select the correct answer

question mark

Welche Annotation sollte über der toString()-Methode verwendet werden?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 8
some-alt