Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Strängpool, Metod Equals() | Sträng
Java-Grunder

bookSträngpool, Metod Equals()

Metoden equals()

Detta kapitel ger en kort översikt av metoden equals(). Denna metod används för att jämföra objekt och används ofta med String-objekt. Låt oss titta på ett exempel där två identiska strängvariabler skapas och jämförs med hjälp av ==:

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 varför? Värdena för de två strängvariablerna är desamma och lika med "string". Det beror på att == jämför referenserna till objekten i minnet, inte de faktiska värdena. Våra objekt befinner sig utanför String pool.

String pool

Vad är String pool? Det är ett område i heap-minnet som allokeras vid skapandet av strängobjekt. Om vi skapar ett String-objekt med värdet "string" och sedan skapar ytterligare ett String-objekt med samma värde, kommer båda objekten att referera till samma objekt i minnet, vilket finns i string pool.

Så varför fick vi "false" i vårt fall? Det beror på att vi kringgick string pool genom att skapa objekt med syntaxen String first = new String("string");. När vi skapar ett String-objekt med en annan syntax, såsom String first = "string";, kommer det att placeras i string pool.

Låt oss titta på ett kodexempel:

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

Låt oss titta på ett diagram som förklarar hur det fungerar och vilka objekt som finns i String Pool.

Hur jämför vi värdena på strängar i String Pool och de utanför den? För detta ändamål tillhandahåller Java metoden equals, som jämför värdena på våra String-objekt istället för deras referenser. Låt oss titta på ett exempel där vi jämför strängar med hjälp av metoden equals istället för ==.

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 att vi har rätt jämförelse.

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 5. Kapitel 7

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

bookSträngpool, Metod Equals()

Svep för att visa menyn

Metoden equals()

Detta kapitel ger en kort översikt av metoden equals(). Denna metod används för att jämföra objekt och används ofta med String-objekt. Låt oss titta på ett exempel där två identiska strängvariabler skapas och jämförs med hjälp av ==:

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 varför? Värdena för de två strängvariablerna är desamma och lika med "string". Det beror på att == jämför referenserna till objekten i minnet, inte de faktiska värdena. Våra objekt befinner sig utanför String pool.

String pool

Vad är String pool? Det är ett område i heap-minnet som allokeras vid skapandet av strängobjekt. Om vi skapar ett String-objekt med värdet "string" och sedan skapar ytterligare ett String-objekt med samma värde, kommer båda objekten att referera till samma objekt i minnet, vilket finns i string pool.

Så varför fick vi "false" i vårt fall? Det beror på att vi kringgick string pool genom att skapa objekt med syntaxen String first = new String("string");. När vi skapar ett String-objekt med en annan syntax, såsom String first = "string";, kommer det att placeras i string pool.

Låt oss titta på ett kodexempel:

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

Låt oss titta på ett diagram som förklarar hur det fungerar och vilka objekt som finns i String Pool.

Hur jämför vi värdena på strängar i String Pool och de utanför den? För detta ändamål tillhandahåller Java metoden equals, som jämför värdena på våra String-objekt istället för deras referenser. Låt oss titta på ett exempel där vi jämför strängar med hjälp av metoden equals istället för ==.

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 att vi har rätt jämförelse.

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 5. Kapitel 7
some-alt