Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære String-Pool, Metoden Equals() | Streng
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Java Grundlæggende

bookString-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

Main.java

copy
123456789
package 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

Main.java

copy
1234567891011
package 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

Main.java

copy
1234567891011
package 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.

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 7

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

bookString-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

Main.java

copy
123456789
package 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

Main.java

copy
1234567891011
package 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

Main.java

copy
1234567891011
package 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.

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 7
some-alt