String Pool, Metode Equals()
equals()-metoden
Denne metoden brukes til å sammenligne objekter og benyttes ofte med String-objekter. La oss se på et eksempel der vi oppretter to identiske strengvariabler og sammenligner dem med ==:
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); } }
Resultatet er false fordi == sammenligner objektreferanser, ikke de faktiske verdiene. Selv om begge strengene inneholder "string", er de ulike objekter i minnet og er opprettet utenfor String pool.
String pool
String pool er en del av heap-minnet hvor streng-litteraler lagres. Når du oppretter strenger med samme verdi ved hjelp av litteraler, refererer de til det samme objektet i minnet.
Hvorfor fikk vi da false? Fordi vi omgår string pool ved å bruke new String("string"), som oppretter et nytt objekt i minnet. Når du bruker String first = "string";, plasseres strengen i string pool og kan deles.
La oss se på et kodeeksempel:
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)); } }
La oss se på et diagram som forklarer hvordan dette fungerer og hvilke objekter som finnes i String Pool.
Hvordan sammenlignes verdiene til strenger i String Pool og de utenfor? For dette formålet tilbyr Java metoden equals, som sammenligner verdiene til våre String-objekter i stedet for referansene deres. La oss se på et eksempel hvor vi sammenligner strenger ved å bruke equals-metoden i stedet for ==.
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))); } }
Nå kan vi se at vi har den riktige sammenligningen.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Can you explain more about the difference between the string pool and heap memory?
Why does using `new String("text")` create a different object than using string literals?
Can you show an example where using `==` works as expected with strings?
Fantastisk!
Completion rate forbedret til 2.7
String Pool, Metode Equals()
Sveip for å vise menyen
equals()-metoden
Denne metoden brukes til å sammenligne objekter og benyttes ofte med String-objekter. La oss se på et eksempel der vi oppretter to identiske strengvariabler og sammenligner dem med ==:
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); } }
Resultatet er false fordi == sammenligner objektreferanser, ikke de faktiske verdiene. Selv om begge strengene inneholder "string", er de ulike objekter i minnet og er opprettet utenfor String pool.
String pool
String pool er en del av heap-minnet hvor streng-litteraler lagres. Når du oppretter strenger med samme verdi ved hjelp av litteraler, refererer de til det samme objektet i minnet.
Hvorfor fikk vi da false? Fordi vi omgår string pool ved å bruke new String("string"), som oppretter et nytt objekt i minnet. Når du bruker String first = "string";, plasseres strengen i string pool og kan deles.
La oss se på et kodeeksempel:
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)); } }
La oss se på et diagram som forklarer hvordan dette fungerer og hvilke objekter som finnes i String Pool.
Hvordan sammenlignes verdiene til strenger i String Pool og de utenfor? For dette formålet tilbyr Java metoden equals, som sammenligner verdiene til våre String-objekter i stedet for referansene deres. La oss se på et eksempel hvor vi sammenligner strenger ved å bruke equals-metoden i stedet for ==.
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))); } }
Nå kan vi se at vi har den riktige sammenligningen.
Takk for tilbakemeldingene dine!