Strä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
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); } }
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
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)); } }
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
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 att vi har den korrekta jämförelsen.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
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?
Fantastiskt!
Completion betyg förbättrat till 2.7
Strä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
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); } }
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
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)); } }
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
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 att vi har den korrekta jämförelsen.
Tack för dina kommentarer!