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

Kursinnhold

Java Utvidet

Java Utvidet

1. Dyp Java-struktur
2. Metoder
3. Avansert Streng
4. Klasser
5. Avanserte Klasser

book
Metoden toString()

Hvordan skrive ut et objekt enklere?

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 sagt, 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 toString()-metoden.

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 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 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 toString()-metoden for å vise ønsket informasjon når vi skriver ut et objekt. La oss opprette et nytt objekt av denne klassen ved å bruke konstruktøren for å se og forsterke 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 forenklet prosessen med å vise objektinformasjon på skjermen betydelig, noe som lar oss spare plass i hovedmetoden.

1. Hvorfor trenger vi toString()-metoden?

2. Hvilken annotasjon bør brukes over toString()-metoden?

question mark

Hvorfor trenger vi toString()-metoden?

Select the correct answer

question mark

Hvilken annotasjon bør 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

course content

Kursinnhold

Java Utvidet

Java Utvidet

1. Dyp Java-struktur
2. Metoder
3. Avansert Streng
4. Klasser
5. Avanserte Klasser

book
Metoden toString()

Hvordan skrive ut et objekt enklere?

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 sagt, 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 toString()-metoden.

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 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 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 toString()-metoden for å vise ønsket informasjon når vi skriver ut et objekt. La oss opprette et nytt objekt av denne klassen ved å bruke konstruktøren for å se og forsterke 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 forenklet prosessen med å vise objektinformasjon på skjermen betydelig, noe som lar oss spare plass i hovedmetoden.

1. Hvorfor trenger vi toString()-metoden?

2. Hvilken annotasjon bør brukes over toString()-metoden?

question mark

Hvorfor trenger vi toString()-metoden?

Select the correct answer

question mark

Hvilken annotasjon bør 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