Methode toString()
Hoe een Object Eenvoudig Afdrukken
Om alle gegevens van een object weer te geven met het commando System.out.println(object); in Java, is er een methode genaamd toString();.
toString()
De toString-methode in Java is een ingebouwde methode die behoort tot de Object-klasse. Deze wordt gebruikt om een stringrepresentatie van een object te retourneren. Standaard, wanneer we toString aanroepen op een object, retourneert deze een string die de klasnaam gevolgd door de hashcode van het object bevat.
Laten we het voorbeeld bekijken:
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
Een hashcode is, eenvoudig gezegd, een unieke identificatie voor een object dat in het geheugen is opgeslagen. We kunnen de hashcode van een object ook bekijken door de methode hashCode() erop aan te roepen, bijvoorbeeld:
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 dat geval rijst de vraag: hoe kunnen we iets specifiekers verkrijgen in plaats van de hashcode van een object? Voor dergelijke gevallen kunnen we de methode toString() overschrijven.
Overerving en methode-overschrijving zijn uitgebreide onderwerpen die we in een aparte cursus zullen behandelen. Voor nu gebruiken we methode-overschrijving alleen voor de toString()-methode.
Gebruik van toString()
Om een methode te overschrijven, gebruiken we de volgende syntaxis:
Main.java
1234@Override public String toString() { // block of code }
We gebruiken de annotatie @Override vóór deze methode. Met deze annotatie herkent de compiler dat we deze methode overschrijven. Vervolgens specificeren we de syntaxis public String toString(), waarmee we aangeven welke exacte methode we overschrijven.
In de body van deze methode definiëren we hoe ons object als een string moet worden weergegeven. Laten we de methode overschrijven voor de 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 + "."; } }
Het commando System.lineSeparator() wordt gebruikt om een nieuwe regel te maken.
We hebben gedefinieerd hoe ons object eruit moet zien door strings met hun waarden samen te voegen. Daarom zien we, wanneer we proberen een object van de klasse Person af te drukken, gedetailleerde informatie over elk veld.
Laten we een object weergeven met behulp van de main-methode en bekijken hoe dit eruitziet:
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 + "."; } }
We hebben informatie verkregen over de klasse waartoe het object bob behoort en details over al zijn velden.
Hierdoor kunnen we de methode toString() overschrijven en definiëren om de gewenste informatie weer te geven bij het afdrukken van een object. Laten we een ander object van deze klasse maken met behulp van de constructor om te zien en te bevestigen hoe de methode toString() het object transformeert:
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(); } }
We zien dat het nieuwe object alice in de console wordt weergegeven met hetzelfde sjabloon.
Conclusie
Door gebruik te maken van de toString()-methode hebben we het proces van het weergeven van objectinformatie op het scherm sterk vereenvoudigd, waardoor we ruimte besparen in de hoofdmethod.
1. Waarom hebben we de toString()-methode nodig?
2. Welke annotatie moet boven de toString()-methode worden gebruikt?
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 2.63
Methode toString()
Veeg om het menu te tonen
Hoe een Object Eenvoudig Afdrukken
Om alle gegevens van een object weer te geven met het commando System.out.println(object); in Java, is er een methode genaamd toString();.
toString()
De toString-methode in Java is een ingebouwde methode die behoort tot de Object-klasse. Deze wordt gebruikt om een stringrepresentatie van een object te retourneren. Standaard, wanneer we toString aanroepen op een object, retourneert deze een string die de klasnaam gevolgd door de hashcode van het object bevat.
Laten we het voorbeeld bekijken:
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
Een hashcode is, eenvoudig gezegd, een unieke identificatie voor een object dat in het geheugen is opgeslagen. We kunnen de hashcode van een object ook bekijken door de methode hashCode() erop aan te roepen, bijvoorbeeld:
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 dat geval rijst de vraag: hoe kunnen we iets specifiekers verkrijgen in plaats van de hashcode van een object? Voor dergelijke gevallen kunnen we de methode toString() overschrijven.
Overerving en methode-overschrijving zijn uitgebreide onderwerpen die we in een aparte cursus zullen behandelen. Voor nu gebruiken we methode-overschrijving alleen voor de toString()-methode.
Gebruik van toString()
Om een methode te overschrijven, gebruiken we de volgende syntaxis:
Main.java
1234@Override public String toString() { // block of code }
We gebruiken de annotatie @Override vóór deze methode. Met deze annotatie herkent de compiler dat we deze methode overschrijven. Vervolgens specificeren we de syntaxis public String toString(), waarmee we aangeven welke exacte methode we overschrijven.
In de body van deze methode definiëren we hoe ons object als een string moet worden weergegeven. Laten we de methode overschrijven voor de 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 + "."; } }
Het commando System.lineSeparator() wordt gebruikt om een nieuwe regel te maken.
We hebben gedefinieerd hoe ons object eruit moet zien door strings met hun waarden samen te voegen. Daarom zien we, wanneer we proberen een object van de klasse Person af te drukken, gedetailleerde informatie over elk veld.
Laten we een object weergeven met behulp van de main-methode en bekijken hoe dit eruitziet:
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 + "."; } }
We hebben informatie verkregen over de klasse waartoe het object bob behoort en details over al zijn velden.
Hierdoor kunnen we de methode toString() overschrijven en definiëren om de gewenste informatie weer te geven bij het afdrukken van een object. Laten we een ander object van deze klasse maken met behulp van de constructor om te zien en te bevestigen hoe de methode toString() het object transformeert:
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(); } }
We zien dat het nieuwe object alice in de console wordt weergegeven met hetzelfde sjabloon.
Conclusie
Door gebruik te maken van de toString()-methode hebben we het proces van het weergeven van objectinformatie op het scherm sterk vereenvoudigd, waardoor we ruimte besparen in de hoofdmethod.
1. Waarom hebben we de toString()-methode nodig?
2. Welke annotatie moet boven de toString()-methode worden gebruikt?
Bedankt voor je feedback!