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:
- Hlavní rozdíl mezi metoda .equals(). a == operátor je, že jedna je metoda a druhá je operátor.
- 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.
- 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()?
- Reflexivita: Pro jakýkoli objekt x by x.equals(x) mělo vždy vrátit hodnotu true.
- Symetrie : Pokud x.equals(y) vrátí true, pak y.equals(x) musí také vrátit true.
- Tranzitivita : Pokud jsou oba x.equals(y) a y.equals(z) pravdivé, pak x.equals(z) musí být také pravdivé.
- Konzistence : Vícenásobné vyvolání x.equals(y) by mělo vrátit stejný výsledek.
- Nenulita: Metoda equals() by ve srovnání s metodou null nikdy neměla vrátit hodnotu true.