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 Utvidet

bookMetode toString()

Hvordan enkelt skrive ut et objekt

For å vise all dataen til et objekt ved å bruke kommandoen System.out.println(object); i Java, finnes det en metode som heter toString();.

toString()

Metoden toString i Java er en innebygd metode som tilhører Object-klassen. Den brukes til å returnere en strengrepresentasjon av et objekt. Som standard, når vi kaller toString på et objekt, returnerer den en streng som inneholder klassenavnet etterfulgt av hashkoden til objektet. La oss se på et eksempel:

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 hashkode er enkelt forklart en unik identifikator for et objekt som er lagret i minnet. Vi kan også se hashkoden til et objekt ved å kalle 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 tilfellet oppstår spørsmålet: hvordan kan vi få noe mer spesifikt i stedet for hashkoden til et objekt? For slike tilfeller kan vi overstyre metoden toString().

Arv og metodeoverstyring er omfattende emner som vi skal studere i et eget kurs. Foreløpig skal vi bruke metodeoverstyring kun for toString()-metoden.

Hvordan bruke toString()

For å overstyre en metode må vi bruke følgende syntaks:

Main.java

Main.java

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

Vi bruker annotasjonen @Override foran denne metoden. Med denne annotasjonen gjenkjenner kompilatoren at vi overstyrer denne metoden. Deretter angir vi syntaksen public String toString(), som viser hvilken spesifikk metode vi overstyrer.

I kroppen til denne metoden definerer vi hvordan objektet vårt skal representeres som en streng. La oss overstyre metoden for klassen 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 + "."; } }

Kommandoen System.lineSeparator() brukes for å lage en ny linje. Vi har definert hvordan objektet vårt skal vises ved å sette sammen strenger med deres verdier. Derfor, når vi prøver å skrive ut et objekt av klassen Person, vil vi se detaljert informasjon om hvert felt. La oss skrive ut et objekt ved hjelp av main-metoden og se hvordan det ser ut:

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ått informasjon om klassen som objektet bob tilhører, samt detaljer om alle dens felt. Dermed kan vi overstyre og definere metoden toString() for å vise ønsket informasjon når et objekt skrives ut. La oss opprette et nytt objekt av denne klassen ved å bruke konstruktøren for å se og tydeliggjøre 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 ser at det nye objektet alice vises i konsollen ved å bruke samme mal.

Konklusjon

Ved å bruke toString()-metoden har vi i stor grad forenklet prosessen med å vise objektinformasjon på skjermen, noe som lar oss spare plass i hovedmetoden.

1. Hvorfor trenger vi toString()-metoden?

2. Hvilken annotasjon skal brukes over toString()-metoden?

question mark

Hvorfor trenger vi toString()-metoden?

Select the correct answer

question mark

Hvilken annotasjon skal brukes over toString()-metoden?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 8

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Awesome!

Completion rate improved to 2.63

bookMetode toString()

Sveip for å vise menyen

Hvordan enkelt skrive ut et objekt

For å vise all dataen til et objekt ved å bruke kommandoen System.out.println(object); i Java, finnes det en metode som heter toString();.

toString()

Metoden toString i Java er en innebygd metode som tilhører Object-klassen. Den brukes til å returnere en strengrepresentasjon av et objekt. Som standard, når vi kaller toString på et objekt, returnerer den en streng som inneholder klassenavnet etterfulgt av hashkoden til objektet. La oss se på et eksempel:

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 hashkode er enkelt forklart en unik identifikator for et objekt som er lagret i minnet. Vi kan også se hashkoden til et objekt ved å kalle 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 tilfellet oppstår spørsmålet: hvordan kan vi få noe mer spesifikt i stedet for hashkoden til et objekt? For slike tilfeller kan vi overstyre metoden toString().

Arv og metodeoverstyring er omfattende emner som vi skal studere i et eget kurs. Foreløpig skal vi bruke metodeoverstyring kun for toString()-metoden.

Hvordan bruke toString()

For å overstyre en metode må vi bruke følgende syntaks:

Main.java

Main.java

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

Vi bruker annotasjonen @Override foran denne metoden. Med denne annotasjonen gjenkjenner kompilatoren at vi overstyrer denne metoden. Deretter angir vi syntaksen public String toString(), som viser hvilken spesifikk metode vi overstyrer.

I kroppen til denne metoden definerer vi hvordan objektet vårt skal representeres som en streng. La oss overstyre metoden for klassen 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 + "."; } }

Kommandoen System.lineSeparator() brukes for å lage en ny linje. Vi har definert hvordan objektet vårt skal vises ved å sette sammen strenger med deres verdier. Derfor, når vi prøver å skrive ut et objekt av klassen Person, vil vi se detaljert informasjon om hvert felt. La oss skrive ut et objekt ved hjelp av main-metoden og se hvordan det ser ut:

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ått informasjon om klassen som objektet bob tilhører, samt detaljer om alle dens felt. Dermed kan vi overstyre og definere metoden toString() for å vise ønsket informasjon når et objekt skrives ut. La oss opprette et nytt objekt av denne klassen ved å bruke konstruktøren for å se og tydeliggjøre 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 ser at det nye objektet alice vises i konsollen ved å bruke samme mal.

Konklusjon

Ved å bruke toString()-metoden har vi i stor grad forenklet prosessen med å vise objektinformasjon på skjermen, noe som lar oss spare plass i hovedmetoden.

1. Hvorfor trenger vi toString()-metoden?

2. Hvilken annotasjon skal brukes over toString()-metoden?

question mark

Hvorfor trenger vi toString()-metoden?

Select the correct answer

question mark

Hvilken annotasjon skal brukes over toString()-metoden?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 8
some-alt