String Pool, Metoden Equals()
equals()-metoden
Denne metode bruges til at sammenligne objekter og anvendes ofte med String-objekter. Lad os undersøge et eksempel, hvor to identiske strengvariabler oprettes og sammenlignes ved hjælp af ==:
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 objektreferencer og ikke deres faktiske værdier. Selvom begge strenge indeholder "string", er de forskellige objekter i hukommelsen og er oprettet uden for String pool.
String pool
String pool er en del af heap-hukommelsen, hvor streng-litteraler gemmes. Når du opretter strenge med samme værdi ved hjælp af litteraler, refererer de til det samme objekt i hukommelsen.
Hvorfor fik vi så false? Fordi vi omgår string pool ved at bruge new String("string"), hvilket opretter et nyt objekt i hukommelsen. Når man bruger String first = "string";, placeres strengen i string pool og kan deles.
Lad os 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)); } }
Lad os se på et diagram, der forklarer, hvordan det fungerer, og hvilke objekter der findes i String Pool.
Hvordan sammenligner vi værdierne af strenge i String Pool og dem udenfor? Til dette formål stiller Java equals-metoden til rådighed, som sammenligner værdierne af vores String-objekter i stedet for deres referencer. Lad os se et eksempel på kode, hvor vi sammenligner strenge ved hjælp af 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))); } }
Nu kan vi se, at vi har den korrekte sammenligning.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
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, Metoden Equals()
Stryg for at vise menuen
equals()-metoden
Denne metode bruges til at sammenligne objekter og anvendes ofte med String-objekter. Lad os undersøge et eksempel, hvor to identiske strengvariabler oprettes og sammenlignes ved hjælp af ==:
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 objektreferencer og ikke deres faktiske værdier. Selvom begge strenge indeholder "string", er de forskellige objekter i hukommelsen og er oprettet uden for String pool.
String pool
String pool er en del af heap-hukommelsen, hvor streng-litteraler gemmes. Når du opretter strenge med samme værdi ved hjælp af litteraler, refererer de til det samme objekt i hukommelsen.
Hvorfor fik vi så false? Fordi vi omgår string pool ved at bruge new String("string"), hvilket opretter et nyt objekt i hukommelsen. Når man bruger String first = "string";, placeres strengen i string pool og kan deles.
Lad os 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)); } }
Lad os se på et diagram, der forklarer, hvordan det fungerer, og hvilke objekter der findes i String Pool.
Hvordan sammenligner vi værdierne af strenge i String Pool og dem udenfor? Til dette formål stiller Java equals-metoden til rådighed, som sammenligner værdierne af vores String-objekter i stedet for deres referencer. Lad os se et eksempel på kode, hvor vi sammenligner strenge ved hjælp af 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))); } }
Nu kan vi se, at vi har den korrekte sammenligning.
Tak for dine kommentarer!