Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Metodi toString() | Luokat
Java Laajennettu
course content

Kurssisisältö

Java Laajennettu

Java Laajennettu

1. Syvällinen Java-rakenne
2. Metodit
3. Merkkijonon Jatkotaso
4. Luokat
5. Luokat Jatko

book
Metodi toString()

Kuinka helpottaa olion tulostamista?

Javan System.out.println(object); -komennolla voidaan näyttää olion kaikki tiedot käyttämällä toString();-metodia.

toString()

Javan toString-metodi on sisäänrakennettu metodi, joka kuuluu Object-luokkaan. Sitä käytetään palauttamaan olion merkkijonoesityksen. Oletuksena, kun kutsumme toString-metodia oliolle, se palauttaa merkkijonon, joka sisältää luokan nimen ja olion hashkoodin. Tarkastellaan esimerkkiä:

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

Hashcode tarkoittaa yksinkertaisesti objektin uniikkia tunnistetta, joka tallennetaan muistiin. Voimme myös tarkastella objektin hash-koodia kutsumalla sen hashCode()-metodia, esimerkiksi:

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

Tällöin herää kysymys: kuinka voimme saada jotain tarkempaa kuin objektin hash-koodi? Tällaisissa tapauksissa voimme ylikirjoittaa toString()-metodin.

Perintä ja metodin ylikirjoitus ovat laajoja aiheita, joita käsittelemme erillisessä kurssissa. Toistaiseksi käytämme metodin ylikirjoitusta vain toString()-metodille.

Kuinka käyttää toString()-metodia

Metodin ylikirjoittamiseen käytetään seuraavaa syntaksia:

Main.java

Main.java

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

Käytämme annotaatiota @Override ennen tätä metodia. Tämän annotaation avulla kääntäjä tunnistaa, että ylikirjoitamme tämän metodin. Seuraavaksi määrittelemme syntaksin public String toString(), joka osoittaa, minkä tarkan metodin olemme ylikirjoittamassa.

Tämän metodin rungossa määrittelemme, miten olion tulisi esittää itsensä merkkijonona. Ylikirjoitetaan metodi Person-luokalle:

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

Komento System.lineSeparator() käytetään uuden rivin luomiseen. Olemme määritelleet, miltä olion tulisi näyttää, yhdistämällä merkkijonoja niiden arvoihin. Siksi, kun yritämme tulostaa Person-luokan olion, näemme yksityiskohtaiset tiedot jokaisesta kentästä. Tulostetaan olio main-metodin avulla ja katsotaan, miltä se näyttää:

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

Olemme saaneet tietoa luokasta, johon olio bob kuuluu, sekä yksityiskohdat kaikista sen kentistä. Voimme siis ylikirjoittaa ja määritellä toString()-metodin näyttämään halutut tiedot olion tulostuksen yhteydessä. Luodaan toinen olio tästä luokasta konstruktorin avulla, jotta näemme ja vahvistamme, miten toString()-metodi muuntaa olion:

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

Voimme nähdä, että uusi olio alice näytetään konsolissa samalla mallilla.

Yhteenveto

Käyttämällä toString()-metodia olemme huomattavasti yksinkertaistaneet olion tietojen näyttämistä ruudulla, mikä mahdollistaa tilan säästämisen päämetodissa.

1. Miksi tarvitsemme toString()-metodia?

2. Mikä annotaatio tulisi käyttää toString()-metodin yläpuolella?

question mark

Miksi tarvitsemme toString()-metodia?

Select the correct answer

question mark

Mikä annotaatio tulisi käyttää toString()-metodin yläpuolella?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 8

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

course content

Kurssisisältö

Java Laajennettu

Java Laajennettu

1. Syvällinen Java-rakenne
2. Metodit
3. Merkkijonon Jatkotaso
4. Luokat
5. Luokat Jatko

book
Metodi toString()

Kuinka helpottaa olion tulostamista?

Javan System.out.println(object); -komennolla voidaan näyttää olion kaikki tiedot käyttämällä toString();-metodia.

toString()

Javan toString-metodi on sisäänrakennettu metodi, joka kuuluu Object-luokkaan. Sitä käytetään palauttamaan olion merkkijonoesityksen. Oletuksena, kun kutsumme toString-metodia oliolle, se palauttaa merkkijonon, joka sisältää luokan nimen ja olion hashkoodin. Tarkastellaan esimerkkiä:

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

Hashcode tarkoittaa yksinkertaisesti objektin uniikkia tunnistetta, joka tallennetaan muistiin. Voimme myös tarkastella objektin hash-koodia kutsumalla sen hashCode()-metodia, esimerkiksi:

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

Tällöin herää kysymys: kuinka voimme saada jotain tarkempaa kuin objektin hash-koodi? Tällaisissa tapauksissa voimme ylikirjoittaa toString()-metodin.

Perintä ja metodin ylikirjoitus ovat laajoja aiheita, joita käsittelemme erillisessä kurssissa. Toistaiseksi käytämme metodin ylikirjoitusta vain toString()-metodille.

Kuinka käyttää toString()-metodia

Metodin ylikirjoittamiseen käytetään seuraavaa syntaksia:

Main.java

Main.java

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

Käytämme annotaatiota @Override ennen tätä metodia. Tämän annotaation avulla kääntäjä tunnistaa, että ylikirjoitamme tämän metodin. Seuraavaksi määrittelemme syntaksin public String toString(), joka osoittaa, minkä tarkan metodin olemme ylikirjoittamassa.

Tämän metodin rungossa määrittelemme, miten olion tulisi esittää itsensä merkkijonona. Ylikirjoitetaan metodi Person-luokalle:

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

Komento System.lineSeparator() käytetään uuden rivin luomiseen. Olemme määritelleet, miltä olion tulisi näyttää, yhdistämällä merkkijonoja niiden arvoihin. Siksi, kun yritämme tulostaa Person-luokan olion, näemme yksityiskohtaiset tiedot jokaisesta kentästä. Tulostetaan olio main-metodin avulla ja katsotaan, miltä se näyttää:

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

Olemme saaneet tietoa luokasta, johon olio bob kuuluu, sekä yksityiskohdat kaikista sen kentistä. Voimme siis ylikirjoittaa ja määritellä toString()-metodin näyttämään halutut tiedot olion tulostuksen yhteydessä. Luodaan toinen olio tästä luokasta konstruktorin avulla, jotta näemme ja vahvistamme, miten toString()-metodi muuntaa olion:

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

Voimme nähdä, että uusi olio alice näytetään konsolissa samalla mallilla.

Yhteenveto

Käyttämällä toString()-metodia olemme huomattavasti yksinkertaistaneet olion tietojen näyttämistä ruudulla, mikä mahdollistaa tilan säästämisen päämetodissa.

1. Miksi tarvitsemme toString()-metodia?

2. Mikä annotaatio tulisi käyttää toString()-metodin yläpuolella?

question mark

Miksi tarvitsemme toString()-metodia?

Select the correct answer

question mark

Mikä annotaatio tulisi käyttää toString()-metodin yläpuolella?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 8
some-alt