În general, atât equals() cât și operatorul „==” din Java sunt folosite pentru a compara obiecte pentru a verifica egalitatea, dar iată câteva dintre diferențele dintre cele două:
- Principala diferență între metoda .equals() și operatorul == este că una este o metodă și cealaltă este un operator.
- Pot fi utilizați operatorii == pentru compararea referințelor (compararea adreselor) și metoda .equals() pentru compararea conținutului. Cu cuvinte simple, == verifică dacă ambele obiecte indică aceeași locație de memorie, în timp ce .equals() evaluează comparația valorilor din obiecte.
- Dacă o clasă nu suprascrie metoda equals, atunci, în mod implicit, folosește metoda equals(Object o) a clasei părinte cea mai apropiată care a suprascris această metodă. A se vedea acest lucru pentru detalii
- Exemplu de codare:
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));
}
}
Ieșire:
falsetrue
Explicație: Aici creăm două obiecte, și anume s1 și s2.
- Atât s1 cât și s2 se referă la obiecte diferite.
- Când folosim operatorul == pentru compararea s1 și s2, atunci rezultatul este fals deoarece ambele au adrese diferite în memorie.
- Utilizând egal, rezultatul este adevărat deoarece se compară doar valorile date în s1 și s2.
Să înțelegem în detaliu ambii operatori:
Operatorul de egalitate (==)
Pot fi aplicați operatori de egalitate pentru fiecare tip primitiv, inclusiv pentru tipul boolean. putem aplica, de asemenea, operatori de egalitate pentru tipurile de obiecte.
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
);
}
}
Ieșire:
falsefalsetruetrue
Dacă aplicăm == pentru tipurile de obiecte, atunci ar trebui să existe compatibilitate între tipurile de argumente (fie de la copil la părinte, fie de la părinte la copil sau același tip). În caz contrar, vom primi o eroare la compilare.
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);
}
}
Ieșire:
falsefalse// error: incomparable types: Thread and String
.equals()
În Java, metoda string equals() compară cele două șiruri de caractere date pe baza datelor/conținutului acestora. Dacă tot conținutul ambelor șiruri de caractere este același, atunci aceasta returnează true. Dacă nu se potrivesc toate caracterele, atunci returnează 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));
}
}
Ieșire:
truefalsefalsefalsetrue
Explicație: Aici folosim metoda .equals pentru a verifica dacă două obiecte conțin aceleași date sau nu.
- În exemplul de mai sus, creăm 3 obiecte Thread și 2 obiecte String.
- În prima comparație, verificăm dacă t1 == t3 sau nu. Deoarece știm că atât t1 cât și t3 indică același obiect, de aceea se returnează adevărat.
- În a doua comparație, folosim operatorul „==” pentru a compara obiectele de tip șir de caractere și nu conținutul obiectelor. Aici, ambele obiecte sunt diferite și, prin urmare, rezultatul acestei comparații este „False”
- Când comparăm 2 obiecte String prin operatorul .equals(), atunci verificăm dacă ambele obiecte conțin aceleași date sau nu.
- Ambele obiecte conțin același șir de caractere, adică GEEKS, de aceea se returnează true.
Acest articol a fost scris de Bishal Kumar Dubey. Dacă vă place GeeksforGeeks și doriți să contribuiți, puteți, de asemenea, să scrieți un articol folosind contribute.geeksforgeeks.org sau să trimiteți articolul prin e-mail la [email protected]. Vedeți articolul dvs. apărând pe pagina principală GeeksforGeeks și ajutați alți Geeks.
.