logo

Rozdiel medzi porovnávaním String pomocou == a metódy .equals() v Jave

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:

  1. Hlavný rozdiel medzi metóda .equals(). a == operátor je, že jedna je metóda a druhá je operátor.
  2. 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.
  3. 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()?

  1. Reflexivita: Pre každý objekt x by x.equals(x) malo vždy vrátiť hodnotu true.
  2. Symetria : Ak x.equals(y) vráti true, potom y.equals(x) musí tiež vrátiť true.
  3. Prechodnosť : Ak x.equals(y) a y.equals(z) sú pravdivé, potom x.equals(z) musí byť tiež pravdivé.
  4. Dôslednosť : Viacnásobné vyvolania x.equals(y) by mali vrátiť rovnaký výsledok.
  5. Nenulita: Metóda equals() by nikdy nemala vrátiť hodnotu true v porovnaní s metódou null.