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
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 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
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 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
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 näemme, että vertailu on oikea.
Käytä equals()-metodia ==-operaattorin sijaan, kun työskentelet String-olioiden kanssa.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
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
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 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
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 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
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 näemme, että vertailu on oikea.
Käytä equals()-metodia ==-operaattorin sijaan, kun työskentelet String-olioiden kanssa.
Kiitos palautteestasi!