String Pool og equals() Metoden
Stryg for at vise menuen
equals()-metoden
Denne metode bruges til at sammenligne objekter og anvendes ofte med String-objekter. Lad os se på 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 oprettes 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 er i String Pool.
Hvordan sammenligner vi værdierne af strenge i String Pool og dem udenfor? Til dette formål tilbyder Java metoden equals, som sammenligner værdierne af vores String-objekter i stedet for deres referencer. Lad os se et eksempel, 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.
Brug metoden equals() i stedet for ==, når du arbejder med String.
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