Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Metode ToString() | Seksjon
Practice
Projects
Quizzes & Challenges
Quizer
Challenges
/
Java Objektorienterte Programmeringsgrunnlag

bookMetode ToString()

Sveip for å vise menyen

Hvordan enkelt skrive ut et objekt

For å vise all dataen til et objekt ved å bruke System.out.println(object);-kommandoen 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 hash-koden 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 før denne metoden. Med denne annotasjonen gjenkjenner kompilatoren at vi overstyrer denne metoden. Deretter spesifiserer vi syntaksen public String toString(), som indikerer hvilken nøyaktig metode vi overstyrer.

I kroppen til denne metoden definerer vi hvordan objektet vårt skal representeres som en streng. La oss overstyre 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() 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 Person-klassen, 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 og 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 bruk av samme mal.

Konklusjon

Ved å bruke toString()-metoden har vi forenklet prosessen med å vise objektinformasjon på skjermen betydelig, noe som gjør at vi sparer 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 1. 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

Seksjon 1. Kapittel 8
some-alt