GeeksforGeeks

Yleisesti sekä equals()- että ”==”-operaattoria käytetään Javassa objektien vertailemiseen yhdenvertaisuuden tarkistamiseksi, mutta tässä on joitakin eroja näiden kahden välillä:

  1. Tärkein ero .equals()-metodin ja ==-operaattorin välillä on se, että toinen on metodi ja toinen operaattori.
  2. Voidaan käyttää ==-operaattoria viittausvertailuun (osoitevertailuun) ja .equals()-metodia sisältövertailuun. Yksinkertaisesti sanottuna == tarkistaa, osoittavatko molemmat objektit samaan muistipaikkaan, kun taas .equals() arvioi objektien arvojen vertailua.
  3. Jos luokka ei ohita equals-metodia, se käyttää oletusarvoisesti lähimmän vanhemman luokan, joka on ohittanut tämän metodin, equals(Object o)-metodia. Katso tästä lisätietoja
  4. Koodausesimerkki:

    public class Test {
    public static void main(String args)
    {
    String s1 = new String("HELLO");
    String s2 = new String("HELLO");
    System.out.println(s1 == s2);
    System.out.println(s1.equals(s2));
    }
    }

    
    

    
    

    Output: Tässä luodaan kaksi objektia eli s1 ja s2.

    • Kumpikin s1 ja s2 viittaavat eri objekteihin.
    • Kun käytämme ==-operaattoria s1:n ja s2:n vertailuun, niin tulos on epätosi, koska molemmilla on eri osoitteet muistissa.
    • Käyttämällä equals-operaattoria tulos on tosi, koska siinä verrataan vain s1:ssä ja s2:ssa annettuja arvoja.

Ymmärtäkäämme molemmat operaattorit yksityiskohtaisesti:

Yhtäläisyysoperaattori(==)

Voidaan soveltaa yhtäläisyysoperaattoreita kaikkiin primitiivisiin tyyppeihin, mukaan lukien boolean-tyyppi. voidaan soveltaa yhtäläisyysoperaattoreita myös oliotyyppeihin.

class Test {
public static void main(String args)
{
System.out.println(10 == 20);
System.out.println('a' == 'b');
System.out.println('a' == 97.0);
System.out.println(true

falsefalsetruetrue

Jos sovellamme == kohdetyyppeihin, argumenttityyppien välillä pitäisi olla yhteensopivuus (joko lapsi vanhemmalle tai vanhempi lapselle tai sama tyyppi). Muuten saamme kääntämisaikavirheen.

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);
falsefalse// error: incomparable types: Thread and String

.equals()

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

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

Tässä käytämme .equals-metodia tarkistaaksemme, sisältääkö kaksi objektia samat tiedot vai ei.

  • Yllä olevassa esimerkissä luomme 3 Thread-objektia ja 2 String-objektia.
  • Ensimmäisessä vertailussa tarkistamme, että t1 == t3 vai ei. Koska tiedämme, että sekä t1 että t3 osoittavat samaan objektiin, siksi se palauttaa true.
  • Toisessa vertailussa käytämme operaattoria ”==” vertaillaksemme merkkijono-objekteja emmekä objektien sisältöä. Tässä molemmat objektit ovat erilaisia ja siksi tämän vertailun tulos on ”False”
  • Kun vertaamme kahta merkkijono-objektia .equals()-operaattorilla, tarkistamme, että molemmat objektit sisältävät samat tiedot vai eivät.
  • Kummatkin objektit sisältävät saman merkkijonon eli GEEKS, siksi se palauttaa true.

Tämän artikkelin on kirjoittanut Bishal Kumar Dubey. Jos pidät GeeksforGeeksistä ja haluat osallistua, voit myös kirjoittaa artikkelin osoitteessa contribute.geeksforgeeks.org tai lähettää artikkelisi sähköpostitse osoitteeseen [email protected]. Näet artikkelisi näkyvän GeeksforGeeksin pääsivulla ja autat muita nörttejä.

Vastaa

Sähköpostiosoitettasi ei julkaista.