Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Strings Vergelijken in Java | Strings
Introductie tot Java

Strings Vergelijken in Java

Veeg om het menu te tonen

Vergelijken is waar Java zich wat "lager bij de hardware" begint te gedragen dan je zou verwachten. Het lijkt logisch dat strings op dezelfde manier vergeleken kunnen worden als getallen — met ==. Als twee strings er immers identiek uitzien, waarom zouden ze dan niet gelijk zijn?

Het probleem met ==

Als je == gebruikt met string-literals, lijkt het in eerste instantie goed te werken:

Main.java

Main.java

1234567891011
package com.example; public class Main { public static void main(String[] args) { String order1 = "Latte"; String order2 = "Latte"; System.out.println(order1 == order2); } }

Beide variabelen verwijzen naar hetzelfde object in Java's interne string pool — wanneer hetzelfde letterlijke tekenreeks opnieuw verschijnt, hergebruikt Java de bestaande. Dus == geeft true terug.

Maar laten we nu iets veranderen aan hoe de strings worden aangemaakt:

Main.java

Main.java

1234567891011
package com.example; public class Main { public static void main(String[] args) { String order1 = new String("Latte"); String order2 = new String("Latte"); System.out.println(order1 == order2); } }

Met new String() instrueer je Java om elke keer een volledig apart object aan te maken — zelfs als de inhoud identiek is. Omdat == geheugenadressen vergelijkt en niet de tekst, geeft het false terug.

De belangrijkste regel: == kijkt niet naar de tekst binnen de string — het controleert of beide variabelen naar exact hetzelfde object in het geheugen verwijzen.

equals() — Vergelijking van de daadwerkelijke inhoud

Als je de daadwerkelijke tekst in twee strings wilt vergelijken, gebruik dan .equals(). Deze methode negeert het geheugen volledig en richt zich alleen op de tekens:

Main.java

Main.java

1234567891011
package com.example; public class Main { public static void main(String[] args) { String order1 = new String("Latte"); String order2 = new String("Latte"); System.out.println(order1.equals(order2)); } }

Hoewel order1 en order2 aparte objecten in het geheugen zijn, vergelijkt .equals() hun inhoud en geeft true terug.

Hoofdlettergevoeligheid met equals()

Java is hoofdlettergevoelig, dus zelfs één letter verschil in hoofdletters maakt strings ongelijk:

Main.java

Main.java

1234567891011
package com.example; public class Main { public static void main(String[] args) { String order1 = "Latte"; String order2 = "latte"; System.out.println(order1.equals(order2)); } }

"Latte" en "latte" worden als verschillende strings beschouwd, dus het resultaat is false.

equalsIgnoreCase() — Vergelijken zonder hoofdlettergevoeligheid

Voor het vergelijken van strings zonder rekening te houden met hoofdletters of kleine letters, gebruik .equalsIgnoreCase():

Main.java

Main.java

12345678910
package com.example; public class Main { public static void main(String[] args) { String order = "Latte"; System.out.println(order.equalsIgnoreCase("LATTE")); } }

.equalsIgnoreCase() behandelt "Latte" en "LATTE" als identiek en geeft true terug.

question mark

Wat vergelijkt == wanneer het wordt gebruikt met Strings in Java?

Selecteer het correcte antwoord

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 5

Vraag AI

expand

Vraag AI

ChatGPT

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

Strings Vergelijken in Java

Vergelijken is waar Java zich wat "lager bij de hardware" begint te gedragen dan je zou verwachten. Het lijkt logisch dat strings op dezelfde manier vergeleken kunnen worden als getallen — met ==. Als twee strings er immers identiek uitzien, waarom zouden ze dan niet gelijk zijn?

Het probleem met ==

Als je == gebruikt met string-literals, lijkt het in eerste instantie goed te werken:

Main.java

Main.java

1234567891011
package com.example; public class Main { public static void main(String[] args) { String order1 = "Latte"; String order2 = "Latte"; System.out.println(order1 == order2); } }

Beide variabelen verwijzen naar hetzelfde object in Java's interne string pool — wanneer hetzelfde letterlijke tekenreeks opnieuw verschijnt, hergebruikt Java de bestaande. Dus == geeft true terug.

Maar laten we nu iets veranderen aan hoe de strings worden aangemaakt:

Main.java

Main.java

1234567891011
package com.example; public class Main { public static void main(String[] args) { String order1 = new String("Latte"); String order2 = new String("Latte"); System.out.println(order1 == order2); } }

Met new String() instrueer je Java om elke keer een volledig apart object aan te maken — zelfs als de inhoud identiek is. Omdat == geheugenadressen vergelijkt en niet de tekst, geeft het false terug.

De belangrijkste regel: == kijkt niet naar de tekst binnen de string — het controleert of beide variabelen naar exact hetzelfde object in het geheugen verwijzen.

equals() — Vergelijking van de daadwerkelijke inhoud

Als je de daadwerkelijke tekst in twee strings wilt vergelijken, gebruik dan .equals(). Deze methode negeert het geheugen volledig en richt zich alleen op de tekens:

Main.java

Main.java

1234567891011
package com.example; public class Main { public static void main(String[] args) { String order1 = new String("Latte"); String order2 = new String("Latte"); System.out.println(order1.equals(order2)); } }

Hoewel order1 en order2 aparte objecten in het geheugen zijn, vergelijkt .equals() hun inhoud en geeft true terug.

Hoofdlettergevoeligheid met equals()

Java is hoofdlettergevoelig, dus zelfs één letter verschil in hoofdletters maakt strings ongelijk:

Main.java

Main.java

1234567891011
package com.example; public class Main { public static void main(String[] args) { String order1 = "Latte"; String order2 = "latte"; System.out.println(order1.equals(order2)); } }

"Latte" en "latte" worden als verschillende strings beschouwd, dus het resultaat is false.

equalsIgnoreCase() — Vergelijken zonder hoofdlettergevoeligheid

Voor het vergelijken van strings zonder rekening te houden met hoofdletters of kleine letters, gebruik .equalsIgnoreCase():

Main.java

Main.java

12345678910
package com.example; public class Main { public static void main(String[] args) { String order = "Latte"; System.out.println(order.equalsIgnoreCase("LATTE")); } }

.equalsIgnoreCase() behandelt "Latte" en "LATTE" als identiek en geeft true terug.

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 5
some-alt