Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Merkkijonopooli, Equals()-metodi | Merkkijono
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Java Perusteet

bookMerkkijonopooli, 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ä merkkijonovakiota ja verrataan niitä käyttämällä ==:

Main.java

Main.java

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

Tulos on false, koska == vertaa olioiden viitteitä, ei niiden varsinaisia arvoja. Vaikka molemmissa merkkijonoissa on "string", ne ovat eri olioita muistissa ja ne on luotu 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

copy
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 havainnollistaa, miten tämä toimii ja mitkä oliot sijaitsevat String Pool -alueella.

Miten vertaillaan merkkijonojen arvoja String Pool -alueella ja sen ulkopuolella? Tätä varten Java tarjoaa equals-metodin, joka vertaa String-olioiden arvoja viittausten sijaan. Tarkastellaan esimerkkikoodia, jossa vertaillaan merkkijonoja käyttämällä equals-metodia ==-operaattorin sijaan.

Main.java

Main.java

copy
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 voimme nähdä, että vertailu on oikea.

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

bookMerkkijonopooli, 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ä merkkijonovakiota ja verrataan niitä käyttämällä ==:

Main.java

Main.java

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

Tulos on false, koska == vertaa olioiden viitteitä, ei niiden varsinaisia arvoja. Vaikka molemmissa merkkijonoissa on "string", ne ovat eri olioita muistissa ja ne on luotu 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

copy
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 havainnollistaa, miten tämä toimii ja mitkä oliot sijaitsevat String Pool -alueella.

Miten vertaillaan merkkijonojen arvoja String Pool -alueella ja sen ulkopuolella? Tätä varten Java tarjoaa equals-metodin, joka vertaa String-olioiden arvoja viittausten sijaan. Tarkastellaan esimerkkikoodia, jossa vertaillaan merkkijonoja käyttämällä equals-metodia ==-operaattorin sijaan.

Main.java

Main.java

copy
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 voimme nähdä, että vertailu on oikea.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 5. Luku 7
some-alt