Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Metode ToString() | Klasser
Java Udvidet
course content

Kursusindhold

Java Udvidet

Java Udvidet

1. Dyb Java-Struktur
2. Metoder
3. String Avanceret
4. Klasser
5. Avancerede Klasser

book
Metode ToString()

Hvordan udskrives et objekt nemmere?

For at vise alle dataene for et objekt ved hjælp af kommandoen System.out.println(object); i Java, findes der en metode kaldet toString();.

toString()

Metoden toString i Java er en indbygget metode, der tilhører Object-klassen. Den bruges til at returnere en strengrepræsentation af et objekt. Som standard, når vi kalder toString på et objekt, returnerer den en streng, der indeholder klassenavnet efterfulgt af objektets hashcode. Lad os se på eksemplet:

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

En hashcode er, kort sagt, en unik identifikator for et objekt, der er gemt i hukommelsen. Vi kan også se hashkoden for et objekt ved at kalde hashCode()-metoden på det, for eksempel:

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); } }

I dette tilfælde opstår spørgsmålet: hvordan kan vi få noget mere specifikt i stedet for hashkoden for et objekt? Til sådanne tilfælde kan vi overskrive toString()-metoden.

Arv og metodeoverskrivning er omfattende emner, som vi vil gennemgå i et separat kursus. For nu vil vi kun bruge metodeoverskrivning til toString()-metoden.

Sådan bruges toString()

For at overskrive en metode skal vi bruge følgende syntaks:

Main.java

Main.java

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

Vi bruger annotationen @Override før denne metode. Med denne annotation genkender compileren, at vi overskriver denne metode. Dernæst angiver vi syntaksen public String toString(), hvilket viser, hvilken præcis metode vi overskriver.

I metodens krop definerer vi, hvordan vores objekt skal repræsenteres som en streng. Lad os overskrive metoden for Person-klassen:

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 + "."; } }

Kommandoen System.lineSeparator() bruges til at oprette en ny linje. Vi har defineret, hvordan vores objekt skal vises, ved at sammenkæde strenge med deres værdier. Derfor vil vi, når vi forsøger at udskrive et objekt af klassen Person, se detaljeret information om hvert felt. Lad os udskrive et objekt ved hjælp af main-metoden og se, hvordan det ser ud:

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 + "."; } }

Vi har fået information om klassen, som objektet bob tilhører, samt detaljer om alle dets felter. Dermed kan vi overskrive og definere metoden toString() for at vise ønsket information, når et objekt udskrives. Lad os oprette et andet objekt af denne klasse ved hjælp af konstruktøren for at se og bekræfte, hvordan toString()-metoden transformerer objektet:

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(); } }

Vi kan se, at det nye objekt alice vises i konsollen ved hjælp af den samme skabelon.

Konklusion

Ved at bruge toString()-metoden har vi i høj grad forenklet processen med at vise objektinformation på skærmen, hvilket gør det muligt at spare plads i main-metoden.

1. Hvorfor har vi brug for toString()-metoden?

2. Hvilken annotation skal bruges over toString()-metoden?

question mark

Hvorfor har vi brug for toString()-metoden?

Select the correct answer

question mark

Hvilken annotation skal bruges over toString()-metoden?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 8

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

course content

Kursusindhold

Java Udvidet

Java Udvidet

1. Dyb Java-Struktur
2. Metoder
3. String Avanceret
4. Klasser
5. Avancerede Klasser

book
Metode ToString()

Hvordan udskrives et objekt nemmere?

For at vise alle dataene for et objekt ved hjælp af kommandoen System.out.println(object); i Java, findes der en metode kaldet toString();.

toString()

Metoden toString i Java er en indbygget metode, der tilhører Object-klassen. Den bruges til at returnere en strengrepræsentation af et objekt. Som standard, når vi kalder toString på et objekt, returnerer den en streng, der indeholder klassenavnet efterfulgt af objektets hashcode. Lad os se på eksemplet:

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

En hashcode er, kort sagt, en unik identifikator for et objekt, der er gemt i hukommelsen. Vi kan også se hashkoden for et objekt ved at kalde hashCode()-metoden på det, for eksempel:

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); } }

I dette tilfælde opstår spørgsmålet: hvordan kan vi få noget mere specifikt i stedet for hashkoden for et objekt? Til sådanne tilfælde kan vi overskrive toString()-metoden.

Arv og metodeoverskrivning er omfattende emner, som vi vil gennemgå i et separat kursus. For nu vil vi kun bruge metodeoverskrivning til toString()-metoden.

Sådan bruges toString()

For at overskrive en metode skal vi bruge følgende syntaks:

Main.java

Main.java

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

Vi bruger annotationen @Override før denne metode. Med denne annotation genkender compileren, at vi overskriver denne metode. Dernæst angiver vi syntaksen public String toString(), hvilket viser, hvilken præcis metode vi overskriver.

I metodens krop definerer vi, hvordan vores objekt skal repræsenteres som en streng. Lad os overskrive metoden for Person-klassen:

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 + "."; } }

Kommandoen System.lineSeparator() bruges til at oprette en ny linje. Vi har defineret, hvordan vores objekt skal vises, ved at sammenkæde strenge med deres værdier. Derfor vil vi, når vi forsøger at udskrive et objekt af klassen Person, se detaljeret information om hvert felt. Lad os udskrive et objekt ved hjælp af main-metoden og se, hvordan det ser ud:

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 + "."; } }

Vi har fået information om klassen, som objektet bob tilhører, samt detaljer om alle dets felter. Dermed kan vi overskrive og definere metoden toString() for at vise ønsket information, når et objekt udskrives. Lad os oprette et andet objekt af denne klasse ved hjælp af konstruktøren for at se og bekræfte, hvordan toString()-metoden transformerer objektet:

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(); } }

Vi kan se, at det nye objekt alice vises i konsollen ved hjælp af den samme skabelon.

Konklusion

Ved at bruge toString()-metoden har vi i høj grad forenklet processen med at vise objektinformation på skærmen, hvilket gør det muligt at spare plads i main-metoden.

1. Hvorfor har vi brug for toString()-metoden?

2. Hvilken annotation skal bruges over toString()-metoden?

question mark

Hvorfor har vi brug for toString()-metoden?

Select the correct answer

question mark

Hvilken annotation skal bruges over toString()-metoden?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 8
some-alt