Stringpool, Methode Equals()
De equals()-methode
Dit hoofdstuk biedt een kort overzicht van de equals()-methode. Deze methode wordt gebruikt om objecten te vergelijken en wordt vaak toegepast bij String-objecten. Laten we een voorbeeld bekijken van het aanmaken van twee identieke stringvariabelen en deze vergelijken met behulp van ==:
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); } }
In de uitvoer krijgen we "false," maar waarom? De waarden van de twee stringvariabelen zijn hetzelfde en gelijk aan "string." Dit komt doordat == de referenties naar objecten in het geheugen vergelijkt, niet de daadwerkelijke waarden. Onze objecten bevinden zich buiten de String pool.
String pool
Wat is de String pool? Dit is een gebied in het heap-geheugen dat wordt toegewezen bij het aanmaken van stringobjecten. Als we een String-object met de waarde "string" aanmaken en vervolgens nog een String-object met dezelfde waarde, zullen beide objecten verwijzen naar hetzelfde object in het geheugen, dat zich in de string pool bevindt.
Waarom kregen we in ons geval dan "false"? Dat komt omdat we de string pool omzeilden door objecten aan te maken met de syntax String first = new String("string");. Wanneer we een String-object aanmaken met een andere syntax, zoals String first = "string";, wordt het in de string pool geplaatst.
Laten we een codevoorbeeld bekijken:
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)); } }
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
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 kunnen we zien dat we de juiste vergelijking hebben.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Geweldig!
Completion tarief verbeterd naar 2.7
Stringpool, Methode Equals()
Veeg om het menu te tonen
De equals()-methode
Dit hoofdstuk biedt een kort overzicht van de equals()-methode. Deze methode wordt gebruikt om objecten te vergelijken en wordt vaak toegepast bij String-objecten. Laten we een voorbeeld bekijken van het aanmaken van twee identieke stringvariabelen en deze vergelijken met behulp van ==:
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); } }
In de uitvoer krijgen we "false," maar waarom? De waarden van de twee stringvariabelen zijn hetzelfde en gelijk aan "string." Dit komt doordat == de referenties naar objecten in het geheugen vergelijkt, niet de daadwerkelijke waarden. Onze objecten bevinden zich buiten de String pool.
String pool
Wat is de String pool? Dit is een gebied in het heap-geheugen dat wordt toegewezen bij het aanmaken van stringobjecten. Als we een String-object met de waarde "string" aanmaken en vervolgens nog een String-object met dezelfde waarde, zullen beide objecten verwijzen naar hetzelfde object in het geheugen, dat zich in de string pool bevindt.
Waarom kregen we in ons geval dan "false"? Dat komt omdat we de string pool omzeilden door objecten aan te maken met de syntax String first = new String("string");. Wanneer we een String-object aanmaken met een andere syntax, zoals String first = "string";, wordt het in de string pool geplaatst.
Laten we een codevoorbeeld bekijken:
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)); } }
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
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 kunnen we zien dat we de juiste vergelijking hebben.
Bedankt voor je feedback!