GeeksforGeeks

A Java-ban általában mind az equals(), mind az “==” operátor az objektumok összehasonlítására szolgál az egyenlőség ellenőrzésére, de itt van néhány különbség a kettő között:

  1. A fő különbség az .equals() módszer és az == operátor között az, hogy az egyik egy módszer, a másik pedig egy operátor.
  2. Hivatkozás-összehasonlításhoz (cím-összehasonlítás) használhatjuk az == operátort, a .equals() metódust pedig a tartalom-összehasonlításhoz. Egyszerűen fogalmazva, az == ellenőrzi, hogy mindkét objektum ugyanarra a memóriahelyre mutat-e, míg az .equals() az objektumokban lévő értékek összehasonlítását értékeli.
  3. Ha egy osztály nem írja felül az equals metódust, akkor alapértelmezés szerint a legközelebbi szülő osztály equals(Object o) metódusát használja, amely felülírta ezt a metódust. Lásd ezt a részleteket
  4. Kódolási példa:

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

    
    

    
    

    Kimenet: Itt két objektumot hozunk létre, nevezetesen s1 és s2.

    • Az s1 és az s2 is különböző objektumokra utal.
    • Ha az == operátort használjuk az s1 és s2 összehasonlítására, akkor az eredmény hamis, mivel mindkettőnek különböző címe van a memóriában.
    • Az egyenlőséget használva az eredmény igaz, mivel csak az s1 és s2-ben megadott értékeket hasonlítja össze.

Magyarázzuk meg részletesen mindkét operátort:

Egyenlőségi operátor(==)

Egyenlőségi operátorokat alkalmazhatunk minden primitív típusra, beleértve a boolean típust is. egyenlőségi operátorokat alkalmazhatunk objektumtípusokra is.

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



Kimenet:

falsefalsetruetrue

Ha a ==-t alkalmazzuk az objektumtípusokra, akkor az argumentumtípusok között kompatibilitásnak kell lennie (akár gyermek a szülőhöz, akár szülő a gyermekhez, akár azonos típushoz). Ellenkező esetben fordítási idejű hibát kapunk.

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);
System.out.println(t==s);
}
}



Kimenet:

falsefalse// error: incomparable types: Thread and String

.equals()

Javában a string equals() metódus összehasonlítja a két megadott stringet a string adatai/tartalma alapján. Ha mindkét karakterlánc tartalma megegyezik, akkor igazat ad vissza. Ha az összes karakter nem egyezik, akkor false-t ad vissza.

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



Kimenet:

truefalsefalsefalsetrue

Magyarázat:

truefalsefalsefalsetrue

Magyarázat:

truefalsefalsefalsetrue

Magyarázat: Itt az .equals metódust használjuk annak ellenőrzésére, hogy két objektum tartalmazza-e ugyanazokat az adatokat vagy sem.

  • A fenti példában 3 Thread objektumot és 2 String objektumot hozunk létre.
  • Az első összehasonlításban azt ellenőrizzük, hogy t1 == t3 vagy nem. Mivel tudjuk, hogy mind a t1, mind a t3 ugyanarra az objektumra mutat, ezért igazat ad vissza.
  • A második összehasonlításban az “==” operátort használjuk a string objektumok összehasonlítására és nem az objektumok tartalmának összehasonlítására. Itt mindkét objektum különböző, ezért az összehasonlítás eredménye “False”
  • Amikor 2 string objektumot hasonlítunk össze az .equals() operátorral, akkor azt ellenőrizzük, hogy mindkét objektum ugyanazt az adatot tartalmazza-e vagy sem.
  • Mindkét objektum ugyanazt a karakterláncot, azaz GEEKS-et tartalmazza, ezért ad vissza true-t.

Ez a cikk Bishal Kumar Dubey hozzájárulása. Ha tetszik a GeeksforGeeks és szeretnél hozzájárulni, írhatsz egy cikket a contribute.geeksforgeeks.org címen, vagy elküldheted a cikkedet a [email protected] címre. Láthatod, hogy a cikked megjelenik a GeeksforGeeks főoldalán, és segíthetsz más geekeknek.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.