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
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Java-Grunder

bookSträngpool, Metod Equals()

Metoden equals()

Denna metod används för att jämföra objekt och används ofta med String-objekt. Nedan följer ett exempel där två identiska strängvariabler skapas och jämförs med ==:

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 är false eftersom == jämför objektreferenser, inte deras faktiska värden. Även om båda strängarna innehåller "string", är de olika objekt i minnet och skapas utanför String pool.

String pool

String pool är en del av heap-minnet där stränglitteraler lagras. När du skapar strängar med samma värde med hjälp av litteraler refererar de till samma objekt i minnet.

Varför fick vi då false? Eftersom vi kringgick string pool genom att använda new String("string"), vilket skapar ett nytt objekt i minnet. När du använder String first = "string"; placeras strängen i string pool och kan delas.

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 den korrekta jämförelsen.

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

Suggested prompts:

Can you explain more about the difference between the string pool and heap memory?

Why does using `new String("text")` create a different object than using string literals?

Can you show an example where using `==` works as expected with strings?

bookSträngpool, Metod Equals()

Svep för att visa menyn

Metoden equals()

Denna metod används för att jämföra objekt och används ofta med String-objekt. Nedan följer ett exempel där två identiska strängvariabler skapas och jämförs med ==:

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 är false eftersom == jämför objektreferenser, inte deras faktiska värden. Även om båda strängarna innehåller "string", är de olika objekt i minnet och skapas utanför String pool.

String pool

String pool är en del av heap-minnet där stränglitteraler lagras. När du skapar strängar med samma värde med hjälp av litteraler refererar de till samma objekt i minnet.

Varför fick vi då false? Eftersom vi kringgick string pool genom att använda new String("string"), vilket skapar ett nytt objekt i minnet. När du använder String first = "string"; placeras strängen i string pool och kan delas.

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 den korrekta jämförelsen.

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 5. Kapitel 7
some-alt