String-Pool, Metoden Equals()
equals()-metoden
Dette kapitel giver et kort overblik over equals()-metoden. Denne metode bruges til at sammenligne objekter og anvendes ofte med String-objekter. Lad os undersøge et eksempel, hvor der oprettes to identiske strengvariabler, som 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); } }
I svaret får vi "false", men hvorfor? Værdierne for de to strengvariabler er de samme og lig med "string". Det skyldes, at == sammenligner referencerne til objekterne i hukommelsen og ikke de faktiske værdier. Vores objekter befinder sig uden for String pool.
String pool
Hvad er String Pool? Det er et område i heap-hukommelsen, der allokeres ved oprettelse af strengobjekter. Hvis vi opretter et String-objekt med værdien "string" og derefter opretter endnu et String-objekt med samme værdi, vil begge objekter referere til det samme objekt i hukommelsen, som er placeret i string pool.
Så hvorfor fik vi "false" i vores tilfælde? Det skyldes, at vi omgår string pool ved at oprette objekter med syntaksen String first = new String("string");. Når vi opretter et String-objekt med en anden syntaks, såsom String first = "string";, vil det blive placeret i string pool.
Lad os se et eksempel på kode:
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 tilbyder Java metoden equals, 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
Fantastisk!
Completion rate forbedret til 2.7
String-Pool, Metoden Equals()
Stryg for at vise menuen
equals()-metoden
Dette kapitel giver et kort overblik over equals()-metoden. Denne metode bruges til at sammenligne objekter og anvendes ofte med String-objekter. Lad os undersøge et eksempel, hvor der oprettes to identiske strengvariabler, som 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); } }
I svaret får vi "false", men hvorfor? Værdierne for de to strengvariabler er de samme og lig med "string". Det skyldes, at == sammenligner referencerne til objekterne i hukommelsen og ikke de faktiske værdier. Vores objekter befinder sig uden for String pool.
String pool
Hvad er String Pool? Det er et område i heap-hukommelsen, der allokeres ved oprettelse af strengobjekter. Hvis vi opretter et String-objekt med værdien "string" og derefter opretter endnu et String-objekt med samme værdi, vil begge objekter referere til det samme objekt i hukommelsen, som er placeret i string pool.
Så hvorfor fik vi "false" i vores tilfælde? Det skyldes, at vi omgår string pool ved at oprette objekter med syntaksen String first = new String("string");. Når vi opretter et String-objekt med en anden syntaks, såsom String first = "string";, vil det blive placeret i string pool.
Lad os se et eksempel på kode:
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 tilbyder Java metoden equals, 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!