Razlika med primerjavo niza z uporabo metode == in .equals() v Javi

Oba metoda equals(). in == operater se uporabljajo za primerjavo dveh objektov v Javi.

The Metoda Java string equals(). , primerja dva niza in vrne true, če se vsi znaki ujemajo v obeh nizih, sicer vrne false.

The == operater primerja referenčno ali pomnilniško lokacijo objektov v kupu, ne glede na to, ali kažejo na isto lokacijo ali ne.
Kadarkoli ustvarimo objekt z uporabo operatorja novo , bo ustvaril a novo pomnilniško mesto za ta predmet. Zato uporabimo operator ==, da preverimo, ali sta pomnilniška lokacija ali naslov dveh objektov enaka ali ne.

Na splošno sta oba operatorja equals() in == v Java se uporabljajo za primerjavo predmetov za preverjanje enakosti, vendar je tukaj nekaj razlik med obema:

  1. Glavna razlika med metoda .equals(). in == operater je, da je eno metoda, drugo pa operator.
  2. Za referenčno primerjavo lahko uporabimo operatorje == ( primerjava naslovov ) in metoda .equals() za vsebinska primerjava . Preprosto povedano, == preveri, ali oba objekta kažeta na isto pomnilniško lokacijo, medtem ko .equals() oceni primerjavo vrednosti v objektih.
  3. Če razred ne preglasi metodo equals , potem privzeto uporabi metodo equals(Object o) najbližjega nadrejenega razreda, ki je preglasil to metodo. **Glej Zakaj preglasiti metodo equals(Object) in hashCode()? Podrobno.

primer:

Metoda String equals() in operator == v Javi.

Java




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

Izhod

true false true true 

Pojasnilo: Tukaj ustvarimo dva objekta, in sicer s1 in s2.

  • Tako s1 kot s2 se nanašata na iste objekte.
  • Ko uporabimo operator == za primerjavo s1 in s2, je rezultat resničen, saj imata oba enaka naslova v vrvica stalni bazen.
  • Če uporabimo enako, je rezultat resničen, ker primerja le vrednosti, podane v s1 in s2.

Bazen nizov Java

s1 = POZDRAVLJENI

s2 = POZDRAVLJENI

Java Heap

s3 = POZDRAVLJENI

Naj podrobneje razumemo oba operaterja:

Operator enakosti (==)

Operatorje enakosti lahko uporabimo za vsak primitivni tip, vključno z logičnim tipom. Za tipe objektov lahko uporabimo tudi operatorje enakosti.

primer:

== operater v Javi.

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

Izhod

false false true true 

Če uporabimo == za tipe objektov, potem mora biti združljivost med vrstami argumentov (bodisi otrok staršu ali starš otroku ali isti tip). V nasprotnem primeru bomo prejeli napako med prevajanjem.

primer:

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

Izhod:

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

Metoda Java String equals().

V Javi je Metoda String equals(). primerja dva podana niza na podlagi podatkov/vsebine niza. Če je vsa vsebina obeh nizov enaka, je vrne true . Če se vsi znaki ne ujemajo, potem je vrne false .

Sintaksa:

Sintaksa : javno logično je enako (Object anotherObject)

Parameter :

  • drug predmet- Niz za primerjavo

Vrne:

  • Logična vrednost :
    • prav- Če so nizi enaki
    • false- če nizi niso enaki

primer:

Metoda String equals() v Javi

Java




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

Izhod:

true false false false true 

Pojasnilo: Tukaj uporabljamo metodo .equals za preverjanje, ali dva objekta vsebujeta iste podatke ali ne.

  • V zgornjem primeru ustvarimo 3 objekte Thread in 2 predmeta String.
  • Pri prvi primerjavi preverimo, ali je t1 == t3 ali ne. Kot vemo oba t1 in t3 kažeta na isti predmet . Zato se vrne true.
  • Pri drugi primerjavi uporabljamo operator == za primerjavo objektov String in ne vsebine objektov. Tukaj sta oba predmeta različna, zato je rezultat te primerjave False.
  • Ko primerjamo 2 objekta String z operatorjem equals(), potem preverjamo, ali oba objekta vsebujeta iste podatke ali ne.
  • Oba objekta vsebujeta isti niz, tj. GEEKS. Zato se vrne true.

Preberite tudi:

  • Metoda Character.equals() v Javi s primeri
  • ==, equals(), compareTo(), equalsIgnoreCase() in compare()

Zaključek

Metoda Java string equals() in operator == se uporabljata za primerjavo nizov v Javi. V tej vadnici smo s primeri obravnavali ==operator in metodo String equals() v Javi.

  Read More     String Methods in Java 

Razlika med metodo == in .equals() - Pogosta vprašanja

1. Kakšna je razlika med str1 == str2 in str1 je enako str2?

V Javi str1==str2 vrne true, če sta str1 in str2 niza z enako vsebino. To je zato, ker so nizi z isto vsebino shranjeni na isti lokaciji.

str1.equals(str2) bo vrnil true, če sta str1 in str 2 različna objekta niza, vendar imata enako vsebino.

2. Kakšna je razlika med == in equals pri primerjavi nizov?

The metoda string equals(). primerja dva niza in vrne true, če se vsi znaki ujemajo v obeh nizih, sicer vrne false.

Operator == primerja referenčno ali pomnilniško lokacijo objektov v kopici, ne glede na to, ali kažejo na isto lokacijo ali ne.

3. Kakšna so pravila metode equals()?

  1. Refleksivnost: Za vsak predmet x mora x.equals(x) vedno vrniti true.
  2. Simetrija : Če x.equals(y) vrne true, potem mora y.equals(x) prav tako vrniti true.
  3. Prehodnost : Če sta x.equals(y) in y.equals(z) oba resnična, mora biti tudi x.equals(z) resničen.
  4. Doslednost : Večkratni klici x.equals(y) bi morali vrniti enak rezultat.
  5. Neničnost: Metoda equals() nikoli ne sme vrniti true v primerjavi z null.