GeeksforGeeks

I allmänhet används både equals() och ”==” operatören i Java för att jämföra objekt för att kontrollera jämlikhet, men här är några av skillnaderna mellan de två:

  1. Den största skillnaden mellan .equals()-metoden och ==-operatören är att den ena är en metod och den andra en operatör.
  2. Vi kan använda ==-operatorer för referensjämförelser (adressjämförelser) och .equals()-metoden för innehållsjämförelser. Med enkla ord kontrollerar == om båda objekten pekar på samma minnesplats medan .equals() utvärderar jämförelsen av värdena i objekten.
  3. Om en klass inte åsidosätter equals-metoden använder den som standard equals(Object o)-metoden i den närmaste överordnade klassen som har åsidosatt denna metod. Se detta för detaljer
  4. Kodningsexempel:

    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:

    falsetrue

    Förklaring: Här skapar vi två objekt, nämligen s1 och s2.

    • Både s1 och s2 hänvisar till olika objekt.
    • När vi använder ==-operatören för att jämföra s1 och s2 blir resultatet falskt eftersom båda har olika adresser i minnet.
    • Om vi använder equals blir resultatet sant eftersom det bara jämför de värden som anges i s1 och s2.

Låt oss förstå båda operatörerna i detalj:

Operatorn för jämlikhet (==)

Vi kan tillämpa operatorer för jämlikhet för alla primitiva typer, inklusive boolska typer.Vi kan också tillämpa operatorer för jämlikhet för objekttyper.

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



Output:

falsefalsetruetrue

Om vi tillämpar == för objekttyper bör det finnas kompatibilitet mellan argumenttyper (antingen barn till förälder eller förälder till barn eller samma typ). Annars kommer vi att få ett kompileringsfel.

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



Output:

falsefalse// error: incomparable types: Thread and String

.equals()

I Java jämför metoden string equals() de två givna strängarna utifrån strängens data/innehåll. Om allt innehåll i de båda strängarna är detsamma returnerar den true. Om alla tecken inte stämmer överens returnerar den falskt.

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



Output:

truefalsefalsefalsetrue

Förklaring: Här använder vi .equals-metoden för att kontrollera om två objekt innehåller samma data eller inte.

  • I exemplet ovan skapar vi 3 trådobjekt och 2 strängobjekt.
  • I den första jämförelsen kontrollerar vi att t1 == t3 eller inte. Eftersom vi vet att både t1 och t3 pekar på samma objekt återges sant.
  • I den andra jämförelsen använder vi operatören ”==” för att jämföra strängobjekten och inte innehållet i objekten. Här är båda objekten olika och därför är resultatet av denna jämförelse ”False”
  • När vi jämför två strängobjekt med hjälp av operatören .equals() kontrollerar vi om båda objekten innehåller samma data eller inte.
  • Båda objekten innehåller samma sträng, dvs. GEEKS, varför den returnerar true.

Denna artikel har bidragits av Bishal Kumar Dubey. Om du gillar GeeksforGeeks och vill bidra kan du också skriva en artikel via contribute.geeksforgeeks.org eller maila din artikel till [email protected]. Se din artikel dyka upp på GeeksforGeeks huvudsida och hjälp andra Geeks.

Lämna ett svar

Din e-postadress kommer inte publiceras.