Merkkijonopooli, 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
123456789package 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
1234567891011package 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
1234567891011package 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.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Mahtavaa!
Completion arvosana parantunut arvoon 2.7
Merkkijonopooli, 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
123456789package 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
1234567891011package 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
1234567891011package 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.
Kiitos palautteestasi!