Methode 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
1234567891011121314151617181920package 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
123456789101112131415161718192021package 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
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
12345678910111213141516171819class 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
12345678910111213141516171819202122232425262728package 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
123456789101112131415161718192021222324252627282930package 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?
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
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
Methode 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
1234567891011121314151617181920package 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
123456789101112131415161718192021package 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
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
12345678910111213141516171819class 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
12345678910111213141516171819202122232425262728package 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
123456789101112131415161718192021222324252627282930package 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?
Danke für Ihr Feedback!