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
Java Grundlæggende

bookString 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

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); } }

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

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

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

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

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); } }

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

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

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