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