Obaja metóda equals(). a operátor == sa používajú na porovnanie dvoch objektov v Jave.
The Metóda Java string equals(). , porovná dva reťazce a vráti hodnotu true, ak sa všetky znaky zhodujú v oboch reťazcoch, inak vráti hodnotu false.
The operátor == porovnáva referenčné alebo pamäťové umiestnenie objektov v halde, či už ukazujú na rovnaké miesto alebo nie.
Kedykoľvek vytvoríme objekt pomocou operátora Nový , vytvorí a nové miesto v pamäti pre ten objekt. Takže používame operátor == na kontrolu umiestnenia pamäte alebo adresy dvoch objektov, či sú rovnaké alebo nie.
Vo všeobecnosti platí, že operátory sa rovnajú () a == Java sa používajú na porovnávanie objektov na kontrolu rovnosti, ale tu sú niektoré z rozdielov medzi nimi:
- Hlavný rozdiel medzi metóda .equals(). a == operátor je, že jedna je metóda a druhá je operátor.
- Na porovnanie referencií môžeme použiť operátory == ( porovnanie adries ) a metóda .equals() pre porovnanie obsahu . Jednoducho povedané, == skontroluje, či oba objekty ukazujú na rovnaké miesto v pamäti, zatiaľ čo .equals() vyhodnotí porovnanie hodnôt v objektoch.
- Ak trieda nie prepísať metódu rovná sa , potom štandardne používa metódu equals(Object o) najbližšej nadradenej triedy, ktorá túto metódu prepísala. **Pozri Prečo prepísať metódy equals(Object) a hashCode()? podrobne.
Príklad:
Metóda String equals() a operátor == v jazyku Java.
Java
príkaz windows arp
// Java program to understand> // the concept of == operator> public> class> Test {> >public> static> void> main(String[] args)> >{> >String s1 =>'HELLO'>;> >String s2 =>'HELLO'>;> >String s3 =>new> String(>'HELLO'>);> >System.out.println(s1 == s2);>// true> >System.out.println(s1 == s3);>// false> >System.out.println(s1.equals(s2));>// true> >System.out.println(s1.equals(s3));>// true> >}> }> |
>
>Výkon
true false true true>
Vysvetlenie: Tu vytvoríme dva objekty, a to s1 a s2.
sql dátové typy
- S1 aj s2 sa týkajú rovnakých objektov.
- Keď použijeme operátor == na porovnanie s1 a s2, výsledok je pravdivý, pretože oba majú rovnaké adresy v reťazec stály bazén.
- Pri použití rovnosti je výsledok pravdivý, pretože porovnáva iba hodnoty uvedené v s1 a s2.
Java String Pool
| s1 = AHOJ |
| s2 = AHOJ |
Java Heap
| s3 = AHOJ |
Poďme podrobne pochopiť oboch operátorov:
Operátor rovnosti (==)
Operátory rovnosti môžeme použiť pre každý primitívny typ, vrátane typu boolean. Pre typy objektov môžeme použiť aj operátory rovnosti.
Príklad:
== operátor v jazyku Java.
Java
// Java program to illustrate> // == operator for compatible data> // types> class> Test {> >public> static> void> main(String[] args)> >{> >// integer-type> >System.out.println(>10> ==>20>);> >// char-type> >System.out.println(>'a'> ==>'b'>);> >// char and double type> >System.out.println(>'a'> ==>97.0>);> >// boolean type> >System.out.println(>true> ==>true>);> >}> }> |
>
>Výkon
false false true true>
Ak použijeme == pre typy objektov, potom by mala byť kompatibilita medzi typmi argumentov (buď dieťa rodičovi alebo rodič dieťaťu alebo rovnaký typ). V opačnom prípade dostaneme chybu pri kompilácii.
Príklad:
Java
programovacie vzory java
// Java program to illustrate> // == operator for incompatible data types> 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);> >// Uncomment to see error> >System.out.println(t==s);> >}> }> |
>
>
Výkon:
false false // error: incomparable types: Thread and String>
Metóda Java String equals().
V Jave, Metóda String equals(). porovnáva dva dané reťazce na základe údajov/obsahu reťazca. Ak sú všetky obsahy oboch reťazcov rovnaké, to vráti true . Ak sa všetky znaky nezhodujú, potom áno vráti false .
znak na reťazec v jazyku Java
Syntax:
Syntax : public boolean rovná sa (objekt inýObjekt)
Parameter :
- inýObjekt- Reťazec na porovnanie
Vrátenie:
- Booleovská hodnota :
- pravda- Ak sú reťazce rovnaké
- falošné- ak reťazce nie sú rovnaké
Príklad:
Metóda String equals() v jazyku Java
Java
ako zatvoriť režim vývojára
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));> >}> }> |
>
>
Výkon:
true false false false true>
Vysvetlenie: Tu používame metódu .equals na kontrolu, či dva objekty obsahujú rovnaké údaje alebo nie.
- Vo vyššie uvedenom príklade vytvoríme 3 objekty Thread a 2 objekty String.
- V prvom porovnaní skontrolujeme, či t1 == t3 alebo nie. Ako vieme oboje t1 a t3 ukazujú na rovnaký objekt . Preto sa to vracia ako pravda.
- V druhom porovnaní používame operátor == na porovnanie objektov reťazca a nie obsahu objektov. Tu sú oba objekty odlišné, a preto je výsledok tohto porovnania nepravdivý.
- Keď porovnávame objekty 2 String pomocou operátora equals(), potom kontrolujeme, či oba objekty obsahujú rovnaké údaje alebo nie.
- Oba objekty obsahujú rovnaký reťazec, t.j. GEEKS. Preto sa to vracia ako pravda.
Prečítajte si tiež:
- Metóda Character.equals() v jazyku Java s príkladmi
- ==, rovná sa(), porovnať s (), rovná saIgnoreCase() a porovnať()
Záver
Metóda Java string equals() a operátor == sa používajú na porovnávanie reťazcov v jazyku Java. V tomto návode sme pokryli operátor ==operátor a metódu String equals() v Jave pomocou príkladov.
Read More String Methods in Java>
Rozdiel medzi metódou == a .equals() – FAQ
1. Aký je rozdiel medzi str1 == str2 a str1 sa rovná str2?
V jazyku Java str1==str2 vráti hodnotu true, ak str1 a str2 sú reťazce s rovnakým obsahom. Je to preto, že reťazce s rovnakým obsahom sú uložené na rovnakom mieste.
str1.equals(str2) vráti hodnotu true, ak str1 a str 2 sú rôzne reťazcové objekty, ale majú rovnaký obsah.
2. Aký je rozdiel medzi == a rovná sa pri porovnávaní reťazcov?
The metóda string sa rovná(). porovná dva reťazce a vráti hodnotu true, ak sa všetky znaky zhodujú v oboch reťazcoch, inak vráti hodnotu false.
Operátor == porovnáva referenčné alebo pamäťové umiestnenie objektov v halde, či už ukazujú na rovnaké miesto alebo nie.
3. Aké sú pravidlá metódy equals()?
- Reflexivita: Pre každý objekt x by x.equals(x) malo vždy vrátiť hodnotu true.
- Symetria : Ak x.equals(y) vráti true, potom y.equals(x) musí tiež vrátiť true.
- Prechodnosť : Ak x.equals(y) a y.equals(z) sú pravdivé, potom x.equals(z) musí byť tiež pravdivé.
- Dôslednosť : Viacnásobné vyvolania x.equals(y) by mali vrátiť rovnaký výsledok.
- Nenulita: Metóda equals() by nikdy nemala vrátiť hodnotu true v porovnaní s metódou null.