String-pooli, 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); } }
Tuloksena on false, koska == vertaa olioiden viitteitä, ei niiden todellisia 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 selittää, miten tämä toimii ja mitkä oliot sijaitsevat String Pool -alueella.
Miten vertaamme merkkijonojen arvoja String Pool -alueella ja sen ulkopuolella? Tätä varten Java tarjoaa equals-metodin, joka vertaa String-olioidemme arvoja viittausten sijaan. Tarkastellaan esimerkkikoodia, jossa vertaamme merkkijonoja equals-metodilla ==-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