Stringpoolen och equals()-metoden
Svep för att visa menyn
equals()-metoden
Denna metod används för att jämföra objekt och används ofta med String-objekt. Här är ett exempel på att skapa två identiska strängvariabler och jämföra dem 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.
Här är 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 rätt jämförelse.
Använd metoden equals() istället för == när du arbetar med String.
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
Stringpoolen och equals()-metoden
equals()-metoden
Denna metod används för att jämföra objekt och används ofta med String-objekt. Här är ett exempel på att skapa två identiska strängvariabler och jämföra dem 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.
Här är 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 rätt jämförelse.
Använd metoden equals() istället för == när du arbetar med String.
Tack för dina kommentarer!