Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele String-pooli ja equals()-metodi | String
Java Perusteet

String-pooli ja equals()-metodi

Pyyhkäise näyttääksesi valikon

equals()-metodi

Tätä metodia käytetään olioiden vertailuun, ja sitä käytetään yleisesti String-olioiden kanssa. Tarkastellaan esimerkkiä, jossa luodaan kaksi identtistä merkkijonovariablea ja verrataan niitä käyttämällä ==:

Main.java

Main.java

123456789
package com.example; public class Main { public static void main(String[] args) { String first = new String("string"); String second = new String("string"); System.out.println(first == second); } }

Tuloksena on false, koska == vertaa olioiden viitteitä, ei niiden todellisia arvoja. Vaikka molemmissa merkkijonoissa on "string", ne ovat eri olioita muistissa ja luodaan String poolin ulkopuolella.

String pool

String pool on osa keon muistia, johon merkkijonolitteraalit tallennetaan. Kun luot merkkijonoja samoilla arvoilla käyttäen litteraaleja, ne viittaavat samaan olioon muistissa.

Miksi siis saimme false? Koska ohitimme string poolin käyttämällä new String("string"), mikä luo uuden olion muistiin. Kun käytetään String first = "string";, merkkijono sijoitetaan string pooliin ja sitä voidaan jakaa.

Tarkastellaan koodiesimerkkiä:

Main.java

Main.java

1234567891011
package com.example; public class Main { public static void main(String[] args) { String first = "string"; String second = "string"; String third = new String("string"); System.out.println("Result of comparing first and second: " + (first == second)); System.out.println("Result of comparing first and third: " + (first == third)); } }

Tarkastellaan kaaviota, joka selittää, miten tämä toimii ja mitkä oliot ovat String Poolissa.

Miten vertaamme String Pool -altaassa olevien ja sen ulkopuolisten merkkijonojen arvoja? Tätä varten Java tarjoaa equals-metodin, joka vertaa String-olioiden arvoja viittausten sijaan. Tarkastellaan esimerkkikoodia, jossa vertaamme merkkijonoja equals-metodilla ==-operaattorin sijaan.

Main.java

Main.java

1234567891011
package com.example; public class Main { public static void main(String[] args) { String first = "string"; String second = "string"; String third = new String("string"); System.out.println("Result of comparing first and second: " + (first.equals(second))); System.out.println("Result of comparing first and third: " + (first.equals(third))); } }

Nyt näemme, että vertailu on oikea.

Note
Huomio

Käytä equals()-metodia ==-operaattorin sijaan, kun työskentelet String-olioiden kanssa.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 5. Luku 7

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

String-pooli ja equals()-metodi

equals()-metodi

Tätä metodia käytetään olioiden vertailuun, ja sitä käytetään yleisesti String-olioiden kanssa. Tarkastellaan esimerkkiä, jossa luodaan kaksi identtistä merkkijonovariablea ja verrataan niitä käyttämällä ==:

Main.java

Main.java

123456789
package com.example; public class Main { public static void main(String[] args) { String first = new String("string"); String second = new String("string"); System.out.println(first == second); } }

Tuloksena on false, koska == vertaa olioiden viitteitä, ei niiden todellisia arvoja. Vaikka molemmissa merkkijonoissa on "string", ne ovat eri olioita muistissa ja luodaan String poolin ulkopuolella.

String pool

String pool on osa keon muistia, johon merkkijonolitteraalit tallennetaan. Kun luot merkkijonoja samoilla arvoilla käyttäen litteraaleja, ne viittaavat samaan olioon muistissa.

Miksi siis saimme false? Koska ohitimme string poolin käyttämällä new String("string"), mikä luo uuden olion muistiin. Kun käytetään String first = "string";, merkkijono sijoitetaan string pooliin ja sitä voidaan jakaa.

Tarkastellaan koodiesimerkkiä:

Main.java

Main.java

1234567891011
package com.example; public class Main { public static void main(String[] args) { String first = "string"; String second = "string"; String third = new String("string"); System.out.println("Result of comparing first and second: " + (first == second)); System.out.println("Result of comparing first and third: " + (first == third)); } }

Tarkastellaan kaaviota, joka selittää, miten tämä toimii ja mitkä oliot ovat String Poolissa.

Miten vertaamme String Pool -altaassa olevien ja sen ulkopuolisten merkkijonojen arvoja? Tätä varten Java tarjoaa equals-metodin, joka vertaa String-olioiden arvoja viittausten sijaan. Tarkastellaan esimerkkikoodia, jossa vertaamme merkkijonoja equals-metodilla ==-operaattorin sijaan.

Main.java

Main.java

1234567891011
package com.example; public class Main { public static void main(String[] args) { String first = "string"; String second = "string"; String third = new String("string"); System.out.println("Result of comparing first and second: " + (first.equals(second))); System.out.println("Result of comparing first and third: " + (first.equals(third))); } }

Nyt näemme, että vertailu on oikea.

Note
Huomio

Käytä equals()-metodia ==-operaattorin sijaan, kun työskentelet String-olioiden kanssa.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 5. Luku 7
some-alt