Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Stringpool, Methode Equals() | String
Java Basisprincipes

bookStringpool, Methode Equals()

De equals()-methode

Deze methode wordt gebruikt om objecten te vergelijken en wordt vaak toegepast bij String-objecten. Bekijk het volgende voorbeeld waarin twee identieke stringvariabelen worden aangemaakt en vergeleken met ==:

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

Het resultaat is false omdat == objectreferenties vergelijkt en niet de daadwerkelijke waarden. Hoewel beide strings "string" bevatten, zijn het verschillende objecten in het geheugen en zijn ze buiten de String pool aangemaakt.

String pool

De String Pool is een gedeelte van het heapgeheugen waar stringliteralens worden opgeslagen. Wanneer je strings met dezelfde waarde aanmaakt via literals, verwijzen ze naar hetzelfde object in het geheugen.

Waarom kregen we dan false? Omdat we de string pool omzeilden door new String("string") te gebruiken, wat een nieuw object in het geheugen aanmaakt. Bij gebruik van String first = "string"; wordt de string in de string pool geplaatst en kan deze gedeeld worden.

Bekijk het volgende codevoorbeeld:

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

Beschouwing van een diagram dat uitlegt hoe het werkt en welke objecten zich in de String Pool bevinden.

Hoe worden de waarden van strings in de String Pool en daarbuiten vergeleken? Hiervoor biedt Java de methode equals, die de waarden van onze String-objecten vergelijkt in plaats van hun referenties. Beschouwing van een voorbeeldcode waarin strings worden vergeleken met de methode equals in plaats van met ==.

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 kunnen we zien dat we de juiste vergelijking hebben.

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 5. Hoofdstuk 7

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

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?

bookStringpool, Methode Equals()

Veeg om het menu te tonen

De equals()-methode

Deze methode wordt gebruikt om objecten te vergelijken en wordt vaak toegepast bij String-objecten. Bekijk het volgende voorbeeld waarin twee identieke stringvariabelen worden aangemaakt en vergeleken met ==:

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

Het resultaat is false omdat == objectreferenties vergelijkt en niet de daadwerkelijke waarden. Hoewel beide strings "string" bevatten, zijn het verschillende objecten in het geheugen en zijn ze buiten de String pool aangemaakt.

String pool

De String Pool is een gedeelte van het heapgeheugen waar stringliteralens worden opgeslagen. Wanneer je strings met dezelfde waarde aanmaakt via literals, verwijzen ze naar hetzelfde object in het geheugen.

Waarom kregen we dan false? Omdat we de string pool omzeilden door new String("string") te gebruiken, wat een nieuw object in het geheugen aanmaakt. Bij gebruik van String first = "string"; wordt de string in de string pool geplaatst en kan deze gedeeld worden.

Bekijk het volgende codevoorbeeld:

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

Beschouwing van een diagram dat uitlegt hoe het werkt en welke objecten zich in de String Pool bevinden.

Hoe worden de waarden van strings in de String Pool en daarbuiten vergeleken? Hiervoor biedt Java de methode equals, die de waarden van onze String-objecten vergelijkt in plaats van hun referenties. Beschouwing van een voorbeeldcode waarin strings worden vergeleken met de methode equals in plaats van met ==.

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 kunnen we zien dat we de juiste vergelijking hebben.

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 5. Hoofdstuk 7
some-alt