logo

Skillnad mellan att jämföra String med metoden == och .equals() i Java

Både metoden equals(). och den == operatör används för att jämföra två objekt i Java.

De Java-sträng equals()-metoden , jämför två strängar och returnerar sant om alla tecken matchar i båda strängarna, annars returnerar falskt.



De == operatör jämför referens- eller minnesplatsen för objekt i en hög, oavsett om de pekar på samma plats eller inte.
När vi skapar ett objekt med operatorn ny , kommer det att skapa en ny minnesplats för det objektet. Så vi använder ==-operatorn för att kontrollera minnesplatsen eller adressen för två objekt är densamma eller inte.

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

onclick js
  1. Den största skillnaden mellan .equals()-metoden och == operatör är att den ena är en metod och den andra är operatören.
  2. Vi kan använda == operatorer för referensjämförelse ( adressjämförelse ) och .equals()-metoden för innehållsjämförelse . Med enkla ord kontrollerar == om båda objekten pekar på samma minnesplats medan .equals() utvärderar jämförelsen av värden i objekten.
  3. Om en klass inte gör det åsidosätt metoden lika , då använder den som standard metoden equals(Object o) för den närmaste överordnade klassen som har åsidosatt denna metod. **Ser Varför åsidosätta metoden equals(Object) och hashCode()? i detalj.

Exempel:

String equals() metod och == operator i Java.



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

>

>

Produktion

true false true true>

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

  • Både s1 och s2 refererar till samma objekt.
  • När vi använder operatorn == för jämförelse av s1 och s2, är resultatet sant eftersom båda har samma adresser i sträng konstant pool.
  • Om du använder lika är resultatet sant eftersom det bara jämför de värden som ges i s1 och s2.

Java String Pool

s1 = HEJ

s2 = HEJ

Java Heap

s3 = HEJ

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

Jämställdhetsoperatör(==)

Vi kan använda jämlikhetsoperatorer för varje primitiv typ, inklusive den booleska typen. Vi kan även tillämpa likhetsoperatorer för objekttyper.

Exempel:

== operator i Java.

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

>

>

Produktion

false false true true>

Om vi ​​tillämpar == för objekttyper då, där bör vara 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.

Exempel:

till strängmetoden i java

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

>

>

sanjay dutt och

Produktion:

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

Java String equals() metod

I Java är String equals()-metoden jämför de två givna strängarna baserat på strängens data/innehåll. Om allt innehåll i båda strängarna är detsamma, är det returnerar sant . Om alla tecken inte matchas, då returnerar falskt .

Syntax:

Syntax : offentlig boolesk lika med(Object anotherObject)

Parameter :

  • annat objekt- Sträng som ska jämföras

Returnerar:

  • booleskt värde :
    • Sann- Om strängar är lika
    • falsk- om strängar inte är lika

Exempel:

String equals()-metoden i Java

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

>

java escape karaktär

>

Produktion:

true false false false true>

Förklaring: Här använder vi metoden .equals 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 om t1 == t3 eller inte. Som vi känner båda t1 och t3 pekar på samma objekt . Det är därför det är sant.
  • I den andra jämförelsen använder vi operatorn == 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 falskt.
  • När vi jämför 2 strängobjekt med operatorn equals() kontrollerar vi att båda objekten innehåller samma data eller inte.
  • Båda objekten innehåller samma sträng, d.v.s. GEEKS. Det är därför det är sant.

Läs också:

  • Character.equals()-metoden i Java med exempel
  • ==, lika med(), compareTo(), equalsIgnoreCase() och compare()

Slutsats

Java string equals()-metoden och ==-operatorn används båda för att jämföra strängar i Java. I den här handledningen har vi täckt ==operatorn och String equals()-metoden i Java med exempel.

  Read More     String Methods in Java>

Skillnad mellan == och .equals()-metoden- FAQs

1. Vad är skillnaden mellan str1 == str2 och str1 är lika med str2?

I Java kommer str1==str2 att returnera sant om str1 och str2 är strängar med samma innehåll. Detta beror på att strängar med samma innehåll lagras på samma plats.

str1.equals(str2) kommer att returnera sant om str1 och str 2 är olika strängobjekt, men har samma innehåll.

2. Vad är skillnaden mellan == och lika i strängjämförelse?

De string equals()-metoden jämför två strängar och returnerar sant om alla tecken matchar båda strängarna, annars returnerar falskt.

Operatorn == jämför referens- eller minnesplatsen för objekt i en hög, oavsett om de pekar på samma plats eller inte.

3. Vilka är reglerna för metoden equals()?

  1. Reflexivitet: För alla objekt x ska x.equals(x) alltid returnera true.
  2. Symmetri : Om x.equals(y) returnerar sant, måste y.equals(x) också returnera sant.
  3. Transitivitet : Om x.equals(y) och y.equals(z) båda är sanna, måste x.equals(z) också vara sanna.
  4. Konsistens : Flera anrop av x.equals(y) bör returnera samma resultat.
  5. Icke ogiltighet: Metoden equals() ska aldrig returnera true jämfört med null.