logo

Rozdíl mezi porovnáním String pomocí == a metody .equals() v Javě

Oba metoda equals(). a == operátor se používají k porovnání dvou objektů v Javě.

The Metoda Java string equals(). , porovná dva řetězce a vrátí hodnotu true, pokud se všechny znaky v obou řetězcích shodují, jinak vrátí hodnotu false.



The == operátor porovnává referenční nebo paměťové umístění objektů v hromadě, ať už ukazují na stejné místo nebo ne.
Kdykoli vytvoříme objekt pomocí operátoru Nový , vytvoří a nové místo v paměti pro ten objekt. Takže použijeme operátor == ke kontrole umístění paměti nebo adresy dvou objektů, zda jsou stejné nebo ne.

odstranit první znak v excelu

Obecně platí, že oba operátory equals() a == v Jáva se používají k porovnání objektů ke kontrole rovnosti, ale zde jsou některé rozdíly mezi těmito dvěma:

  1. Hlavní rozdíl mezi metoda .equals(). a == operátor je, že jedna je metoda a druhá je operátor.
  2. Pro porovnání referencí můžeme použít operátory == ( srovnání adres ) a metoda .equals() pro srovnání obsahu . Jednoduše řečeno, == kontroluje, zda oba objekty ukazují na stejné paměťové místo, zatímco .equals() vyhodnocuje jako porovnání hodnot v objektech.
  3. Pokud třída ne přepsat metodu rovná se , pak standardně používá metodu equals(Object o) nejbližší nadřazené třídy, která tuto metodu přepsala. **Vidět Proč přepsat metody equals(Object) a hashCode()? podrobně.

Příklad:

Metoda String equals() a operátor == v Javě.



Jáva






// 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ýstup

true false true true>

Vysvětlení: Zde vytvoříme dva objekty, konkrétně s1 a s2.

  • S1 i s2 odkazují na stejné objekty.
  • Když použijeme operátor == pro srovnání s1 a s2, výsledek je pravdivý, protože oba mají stejné adresy v tětiva stálý bazén.
  • Při použití rovnosti je výsledek pravdivý, protože porovnává pouze hodnoty uvedené v s1 a s2.

Java String Pool

s1 = AHOJ

s2 = AHOJ

Java halda

s3 = AHOJ

Pojďme si oba operátory podrobně porozumět:

Operátor rovnosti (==)

Operátory rovnosti můžeme použít pro každý primitivní typ, včetně typu boolean. Můžeme také použít operátory rovnosti pro typy objektů.

Příklad:

== operátor v Javě.

Jáva

řetězec java nahradit




// 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ýstup

false false true true>

Pokud použijeme == pro typy objektů, pak tam by měla být kompatibilita mezi typy argumentů (buď dítě rodiči nebo rodič dítěti nebo stejný typ). V opačném případě dostaneme chybu při kompilaci.

Příklad:

Jáva




// 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);> >}> }>

>

hashtable java
>

Výstup:

false false // error: incomparable types: Thread and String>

Metoda Java String equals().

V Javě, Metoda String equals(). porovnává dva dané řetězce na základě dat/obsahu řetězce. Pokud jsou všechny obsahy obou řetězců stejné, je to vrátí true . Pokud se všechny znaky neshodují, pak ano vrací false .

Syntax:

Syntax : public boolean se rovná(objekt jinýObjekt)

Parametr :

  • jinýObjekt- Řetězec k porovnání

Vrácení:

  • Booleovská hodnota :
    • skutečný- Pokud jsou řetězce stejné
    • Nepravdivé- pokud si řetězce nejsou rovny

Příklad:

Metoda String equals() v Javě

Jáva




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ýstup:

true false false false true>

Vysvětlení: Zde používáme metodu .equals ke kontrole, zda dva objekty obsahují stejná data nebo ne.

  • Ve výše uvedeném příkladu vytvoříme 3 objekty Thread a 2 objekty String.
  • V prvním srovnání zkontrolujeme, zda t1 == t3 nebo ne. Jak známe oba t1 a t3 ukazují na stejný objekt . Proto se to vrací jako pravda.
  • Ve druhém srovnání používáme operátor == pro porovnání objektů typu String a nikoli obsahu objektů. Zde jsou oba objekty odlišné, a proto je výsledek tohoto srovnání nepravdivý.
  • Když porovnáváme objekty 2 String pomocí operátoru equals(), pak kontrolujeme, zda oba objekty obsahují stejná data nebo ne.
  • Oba objekty obsahují stejný řetězec, tj. GEEKS. Proto se to vrací jako pravda.

Přečtěte si také:

jaký je rozdíl mezi megabytem a gigabajtem
  • Metoda Character.equals() v Javě s příklady
  • ==, equals(), CompareTo(), equalsIgnoreCase() a Compare()

Závěr

Metoda Java string equals() a operátor == se používají k porovnání řetězců v Javě. V tomto tutoriálu jsme na příkladech pokryli operátor ==operator a metodu String equals() v Javě.

  Read More     String Methods in Java >

Rozdíl mezi metodou == a .equals() – FAQ

1. Jaký je rozdíl mezi str1 == str2 a str1 se rovná str2?

V Javě str1==str2 vrátí hodnotu true, pokud jsou str1 a str2 řetězce se stejným obsahem. Řetězce se stejným obsahem jsou totiž uloženy na stejném místě.

str1.equals(str2) vrátí hodnotu true, pokud jsou str1 a str 2 různé objekty typu string, ale mají stejný obsah.

2. Jaký je rozdíl mezi == a rovná se při porovnání řetězců?

The metoda string equals(). porovná dva řetězce a vrátí hodnotu true, pokud se všechny znaky shodují v obou řetězcích, jinak vrátí hodnotu false.

Operátor == porovnává referenční nebo paměťové umístění objektů v hromadě, ať už ukazují na stejné místo nebo ne.

3. Jaká jsou pravidla metody equals()?

  1. Reflexivita: Pro jakýkoli objekt x by x.equals(x) mělo vždy vrátit hodnotu true.
  2. Symetrie : Pokud x.equals(y) vrátí true, pak y.equals(x) musí také vrátit true.
  3. Tranzitivita : Pokud jsou oba x.equals(y) a y.equals(z) pravdivé, pak x.equals(z) musí být také pravdivé.
  4. Konzistence : Vícenásobné vyvolání x.equals(y) by mělo vrátit stejný výsledek.
  5. Nenulita: Metoda equals() by ve srovnání s metodou null nikdy neměla vrátit hodnotu true.