In het algemeen worden zowel equals() als “==” operator in Java gebruikt om objecten te vergelijken om gelijkheid te controleren, maar hier zijn enkele van de verschillen tussen de twee:
- Het belangrijkste verschil tussen de methode .equals() en de operator == is dat de een een methode is en de ander een operator.
- We kunnen == operatoren gebruiken voor referentievergelijking (adresvergelijking) en .equals() methode voor inhoudsvergelijking. In eenvoudige woorden, == controleert of beide objecten naar dezelfde geheugenplaats wijzen, terwijl .equals() de vergelijking van de waarden in de objecten evalueert.
- Als een klasse de methode equals niet overschrijft, dan gebruikt zij standaard de methode equals(Object o) van de dichtstbijzijnde bovenliggende klasse die deze methode heeft overschreven. Zie dit voor details
- Coding Voorbeeld:
public
class
Test {
public
static
void
main(String args)
{
String s1 =
new
String(
"HELLO"
);
String s2 =
new
String(
"HELLO"
);
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
}
}
Output:
falsetrue
Uitleg: Hier worden twee objecten aangemaakt, namelijk s1 en s2.
- Zowel s1 als s2 verwijzen naar verschillende objecten.
- Wanneer we de == operator gebruiken voor de vergelijking van s1 en s2, is het resultaat vals, omdat beide verschillende adressen in het geheugen hebben.
- Wanneer we gelijken gebruiken, is het resultaat waar, omdat alleen de waarden in s1 en s2 worden vergeleken.
Laten we beide operatoren in detail begrijpen:
Gelijkheidsoperator(==)
We kunnen gelijkheidsoperatoren toepassen op alle primitieve typen, inclusief het booleaanse type. we kunnen ook gelijkheidsoperatoren toepassen op objecttypen.
class
Test {
public
static
void
main(String args)
{
System.out.println(
10
==
20
);
System.out.println(
'a'
==
'b'
);
System.out.println(
'a'
==
97.0
);
System.out.println(
true
==
true
);
}
}
Output:
falsefalsetruetrue
Als we == toepassen voor object-types, dan moet er compatibiliteit zijn tussen de argument-types (ofwel kind naar ouder of ouder naar kind of hetzelfde type). Anders krijgen we een compileertijdfout.
class
Test {
public
static
void
main(String args)
{
Thread t =
new
Thread();
Object o =
new
Object();
String s =
new
String(
"GEEKS"
);
System.out.println(t == o);
System.out.println(o == s);
System.out.println(t==s);
}
}
Output:
falsefalse// error: incomparable types: Thread and String
.equals()
In Java vergelijkt de methode string equals() de twee gegeven strings op basis van de gegevens/inhoud van de string. Als de inhoud van beide strings gelijk is, is de uitkomst waar. Als niet alle tekens overeenkomen, is het resultaat false.
public
class
Test {
public
static
void
main(String args)
{
Thread t1 =
new
Thread();
Thread t2 =
new
Thread();
Thread t3 = t1;
String s1 =
new
String(
"GEEKS"
);
String s2 =
new
String(
"GEEKS"
);
System.out.println(t1 == t3);
System.out.println(t1 == t2);
System.out.println(s1 == s2);
System.out.println(t1.equals(t2));
System.out.println(s1.equals(s2));
}
}
Output:
truefalsefalsefalsetrue
Uitleg: Hier gebruiken we .equals methode om te controleren of twee objecten dezelfde gegevens bevatten of niet.
- In het bovenstaande voorbeeld maken we 3 Thread-objecten en 2 String-objecten.
- In de eerste vergelijking controleren we of t1 == t3 of niet. Omdat we weten dat zowel t1 als t3 naar hetzelfde object wijzen, is de uitkomst waar.
- In de tweede vergelijking gebruiken we de operator “==” om de String Objecten te vergelijken en niet de inhoud van de objecten. Hier zijn beide objecten verschillend en daarom is het resultaat van deze vergelijking “False”
- Wanneer wij 2 String-objecten met de operator .equals() vergelijken, controleren wij of beide objecten dezelfde gegevens bevatten of niet.
- Beide objecten bevatten dezelfde String, d.w.z. GEEKS dat is waarom het true.
Dit artikel is bijgedragen door Bishal Kumar Dubey. Als je GeeksforGeeks leuk vindt en een bijdrage wilt leveren, kun je ook een artikel schrijven via contribute.geeksforgeeks.org of mail je artikel naar [email protected]. Zie je artikel verschijnen op de GeeksforGeeks hoofdpagina en help andere Geeks.