logo

Ero merkkijonon vertailun välillä Javassa ==- ja .equals()-menetelmällä

Molemmat equals() -metodi ja == operaattori käytetään kahden objektin vertailuun Javassa.

The Java-merkkijono equals() -menetelmä , vertaa kahta merkkijonoa ja palauttaa tosi, jos kaikki merkit täsmäävät molemmissa merkkijonoissa, muussa tapauksessa palauttaa false.



The == operaattori vertaa kasan objektien viite- tai muistipaikkaa riippumatta siitä, osoittavatko ne samaan paikkaan vai eivät.
Aina kun luomme objektin käyttämällä operaattoria Uusi , se luo a uusi muistipaikka sille esineelle. Joten käytämme ==-operaattoria tarkistaaksemme, ovatko kahden objektin muistipaikat tai osoitteet samat vai eivät.

Yleensä molemmat yhtä kuin () ja == -operaattorit in Java käytetään objektien vertailuun tasa-arvon tarkistamiseksi, mutta tässä on joitain eroja näiden kahden välillä:

  1. Tärkein ero .equals()-metodi ja == operaattori on, että toinen on menetelmä ja toinen on operaattori.
  2. Voimme käyttää ==-operaattoreita vertailussa ( osoitteiden vertailu ) ja .equals() -metodi for sisällön vertailu . Yksinkertaisesti sanottuna == tarkistaa, osoittavatko molemmat objektit samaan muistipaikkaan, kun taas .equals() arvioi objektien arvojen vertailun.
  3. Jos luokka ei ohittaa yhtäläinen menetelmä , silloin se käyttää oletusarvoisesti tämän menetelmän ohittaneen lähimmän yläluokan menetelmää equals(Object o). **Katso Miksi Override equals(Object)- ja hashCode()-metodit? yksityiskohtaisesti.

Esimerkki:

String equals() -metodi ja ==-operaattori Javassa.



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

>

>

Lähtö

true false true true>

Selitys: Täällä luomme kaksi objektia, nimittäin s1 ja s2.

  • Sekä s1 että s2 viittaavat samoihin objekteihin.
  • Kun käytämme ==-operaattoria s1- ja s2-vertailussa, tulos on tosi, koska molemmilla on samat osoitteet merkkijono jatkuva uima-allas.
  • Käyttämällä yhtäläisiä, tulos on tosi, koska se vertaa vain s1:ssä ja s2:ssa annettuja arvoja.

Java String Pool

s1 = HEI

s2 = HEI

Java-kasa

s3 = HELLO

Ymmärrämme molemmat operaattorit yksityiskohtaisesti:

Tasa-arvooperaattori(==)

Voimme soveltaa tasa-arvooperaattoreita jokaiselle primitiivityypille, mukaan lukien boolen tyyppi. Voimme myös soveltaa yhtäläisyysoperaattoreita objektityypeille.

Esimerkki:

== operaattori Javassa.

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

>

>

df loc
Lähtö

false false true true>

Jos käytämme == objektityyppejä, niin siellä argumenttityyppien tulee olla yhteensopivia (joko lapsesta vanhemmalle tai vanhemmalta lapselle tai sama tyyppi). Muuten saamme käännösaikavirheen.

Esimerkki:

Java

aakkoset numeroissa




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

>

>

Lähtö:

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

Java String equals() -menetelmä

Javassa, String equals() -metodi vertaa kahta annettua merkkijonoa merkkijonon tietojen/sisällön perusteella. Jos molempien merkkijonojen sisältö on sama, se palaa todeksi . Jos kaikki merkit eivät täsmää, niin se palauttaa false .

Syntaksi:

Syntaksi : julkinen totuusarvo on yhtä suuri (Object otherObject)

Parametri :

  • toinen esine- Verrattava merkkijono

Palautukset:

  • Boolen arvo :
    • totta- Jos merkkijonot ovat yhtä suuret
    • väärä- jos merkkijonot eivät ole yhtä suuret

Esimerkki:

String equals() -menetelmä Javassa

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

>

>

Lähtö:

true false false false true>

Selitys: Tässä käytämme .equals-menetelmää tarkistaaksemme, sisältävätkö kaksi objektia samaa dataa vai eivät.

  • Yllä olevassa esimerkissä luomme 3 säieobjektia ja 2 merkkijono-objektia.
  • Ensimmäisessä vertailussa tarkistamme, onko t1 == t3 vai ei. Kuten tiedämme molemmat t1 ja t3 osoittavat sama kohde . Siksi se palaa todeksi.
  • Toisessa vertailussa käytämme operaattoria == merkkijonoobjektien vertailuun, emme objektien sisältöä. Tässä molemmat objektit ovat erilaisia, ja siksi tämän vertailun tulos on väärä.
  • Kun vertaamme kahta merkkijono-oliota equals()-operaattorilla, tarkistamme, sisältävätkö molemmat objektit saman tiedon vai eivät.
  • Molemmat objektit sisältävät saman merkkijonon, eli GEEKS. Siksi se palaa todeksi.

Lue myös:

  • Character.equals() -menetelmä Javassa esimerkein
  • ==, equals(), vertaa(), equalsIgnoreCase() ja vertaa()

Johtopäätös

Java string equals() -menetelmää ja == -operaattoria käytetään molempien merkkijonojen vertailuun Javassa. Tässä opetusohjelmassa olemme käsitelleet Javan ==operator- ja String equals()-metodia esimerkein.

  Read More     String Methods in Java>

Ero ==- ja .equals()-metodin välillä - UKK

1. Mitä eroa on välillä str1 == str2 ja str1 on yhtä kuin str2?

Javassa str1==str2 palauttaa tosi, jos str1 ja str2 ovat merkkijonoja, joilla on sama sisältö. Tämä johtuu siitä, että merkkijonot, joilla on sama sisältö, on tallennettu samaan paikkaan.

str1.equals(str2) palauttaa tosi, jos str1 ja str 2 ovat eri merkkijonoobjekteja, mutta niillä on sama sisältö.

2. Mitä eroa on == ja yhtä kuin merkkijonovertailussa?

The string equals() -metodi vertaa kahta merkkijonoa ja palauttaa arvon tosi, jos kaikki merkit täsmäävät molemmissa merkkijonoissa, muussa tapauksessa palauttaa false.

==-operaattori vertaa kasan objektien viite- tai muistipaikkaa riippumatta siitä, osoittavatko ne samaan paikkaan vai eivät.

3. Mitkä ovat equals()-metodin säännöt?

  1. Heijastuskyky: Minkä tahansa objektin x kohdalla x.equals(x):n tulee aina palauttaa tosi.
  2. Symmetria : Jos x.equals(y) palauttaa tosi, y.equals(x):n on myös palautettava tosi.
  3. Transitiivisuus : Jos x.equals(y) ja y.equals(z) ovat molemmat tosi, niin x.equals(z):n on myös oltava tosi.
  4. Johdonmukaisuus : Useiden x.equals(y):n kutsujen pitäisi palauttaa sama tulos.
  5. Ei-pätemättömyys: Equals()-metodin ei pitäisi koskaan palauttaa true verrattuna nollaan.