Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Metod toString() | Klasser
Java Fördjupad
course content

Kursinnehåll

Java Fördjupad

Java Fördjupad

1. Djupgående Java-struktur
2. Metoder
3. Sträng Avancerad
4. Klasser
5. Klasser Avancerat

book
Metod toString()

Hur skriver man ut ett objekt enklare?

För att visa all data för ett objekt med kommandot System.out.println(object); i Java, finns det en metod som heter toString();.

toString()

Metoden toString i Java är en inbyggd metod som tillhör klassen Object. Den används för att returnera en strängrepresentation av ett objekt. Som standard, när vi anropar toString på ett objekt, returneras en sträng som innehåller klassnamnet följt av objektets hashkod. Låt oss titta på ett exempel:

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 hashkod är, enkelt uttryckt, en unik identifierare för ett objekt som lagras i minnet. Vi kan också se hashkoden för ett objekt genom att anropa metoden hashCode() på det, till exempel:

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 det fallet uppstår frågan: hur kan vi få något mer specifikt istället för hashkoden för ett objekt? För sådana fall kan vi överskrida metoden toString().

Arv och metodöverskrivning är omfattande ämnen som vi kommer att studera i en separat kurs. För tillfället kommer vi endast att använda metodöverskrivning för metoden toString().

Hur man använder toString()

För att överskrida en metod behöver vi använda följande syntax:

Main.java

Main.java

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

Vi använder annoteringen @Override före denna metod. Med denna annotering känner kompilatorn igen att vi skriver över denna metod. Därefter anger vi syntaxen public String toString(), vilket visar vilken exakt metod vi skriver över.

I metodens kropp definierar vi hur vårt objekt ska representeras som en sträng. Låt oss skriva över metoden för 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 + "."; } }

Kommandot System.lineSeparator() används för att skapa en ny rad. Vi har definierat hur vårt objekt ska visas genom att sammanfoga strängar med deras värden. Därför, när vi försöker skriva ut ett objekt av klassen Person, kommer vi att se detaljerad information om varje fält. Låt oss skriva ut ett objekt med hjälp av main-metoden och se hur 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 information om klassen som objektet bob tillhör samt detaljer om alla dess fält. På så sätt kan vi överskrida och definiera metoden toString() för att visa önskad information när vi skriver ut ett objekt. Låt oss skapa ett annat objekt av denna klass med konstruktorn för att se och förstärka hur metoden toString() omvandlar 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 att det nya objektet alice visas i konsolen med samma mall.

Slutsats

Genom att använda metoden toString() har vi förenklat processen att visa objektinformation på skärmen avsevärt, vilket gör att vi sparar utrymme i main-metoden.

1. Varför behöver vi metoden toString()?

2. Vilken annotation ska användas ovanför metoden toString()?

question mark

Varför behöver vi metoden toString()?

Select the correct answer

question mark

Vilken annotation ska användas ovanför metoden toString()?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 8

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

course content

Kursinnehåll

Java Fördjupad

Java Fördjupad

1. Djupgående Java-struktur
2. Metoder
3. Sträng Avancerad
4. Klasser
5. Klasser Avancerat

book
Metod toString()

Hur skriver man ut ett objekt enklare?

För att visa all data för ett objekt med kommandot System.out.println(object); i Java, finns det en metod som heter toString();.

toString()

Metoden toString i Java är en inbyggd metod som tillhör klassen Object. Den används för att returnera en strängrepresentation av ett objekt. Som standard, när vi anropar toString på ett objekt, returneras en sträng som innehåller klassnamnet följt av objektets hashkod. Låt oss titta på ett exempel:

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 hashkod är, enkelt uttryckt, en unik identifierare för ett objekt som lagras i minnet. Vi kan också se hashkoden för ett objekt genom att anropa metoden hashCode() på det, till exempel:

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 det fallet uppstår frågan: hur kan vi få något mer specifikt istället för hashkoden för ett objekt? För sådana fall kan vi överskrida metoden toString().

Arv och metodöverskrivning är omfattande ämnen som vi kommer att studera i en separat kurs. För tillfället kommer vi endast att använda metodöverskrivning för metoden toString().

Hur man använder toString()

För att överskrida en metod behöver vi använda följande syntax:

Main.java

Main.java

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

Vi använder annoteringen @Override före denna metod. Med denna annotering känner kompilatorn igen att vi skriver över denna metod. Därefter anger vi syntaxen public String toString(), vilket visar vilken exakt metod vi skriver över.

I metodens kropp definierar vi hur vårt objekt ska representeras som en sträng. Låt oss skriva över metoden för 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 + "."; } }

Kommandot System.lineSeparator() används för att skapa en ny rad. Vi har definierat hur vårt objekt ska visas genom att sammanfoga strängar med deras värden. Därför, när vi försöker skriva ut ett objekt av klassen Person, kommer vi att se detaljerad information om varje fält. Låt oss skriva ut ett objekt med hjälp av main-metoden och se hur 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 information om klassen som objektet bob tillhör samt detaljer om alla dess fält. På så sätt kan vi överskrida och definiera metoden toString() för att visa önskad information när vi skriver ut ett objekt. Låt oss skapa ett annat objekt av denna klass med konstruktorn för att se och förstärka hur metoden toString() omvandlar 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 att det nya objektet alice visas i konsolen med samma mall.

Slutsats

Genom att använda metoden toString() har vi förenklat processen att visa objektinformation på skärmen avsevärt, vilket gör att vi sparar utrymme i main-metoden.

1. Varför behöver vi metoden toString()?

2. Vilken annotation ska användas ovanför metoden toString()?

question mark

Varför behöver vi metoden toString()?

Select the correct answer

question mark

Vilken annotation ska användas ovanför metoden toString()?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 8
some-alt