logo

Verschil tussen het vergelijken van String met behulp van de methode == en .equals() in Java

Beide gelijk aan() methode en de == exploitant worden gebruikt om twee objecten in Java te vergelijken.

De Java-tekenreeks is gelijk aan() methode , vergelijkt twee tekenreeksen en retourneert waar als alle tekens in beide tekenreeksen overeenkomen, anders wordt onwaar geretourneerd.

De == exploitant vergelijkt de referentie- of geheugenlocatie van objecten in een hoop, ongeacht of ze naar dezelfde locatie verwijzen of niet.
Telkens wanneer we een object maken met behulp van de operator nieuw , er wordt een nieuwe geheugenlocatie voor dat voorwerp. We gebruiken dus de == operator om te controleren of de geheugenlocatie of het adres van twee objecten hetzelfde is of niet.



Over het algemeen worden zowel de operatoren equals() als == gebruikt Java worden gebruikt om objecten te vergelijken om de gelijkheid te controleren, maar hier zijn enkele verschillen tussen de twee:

  1. Het belangrijkste verschil tussen de .equals() methode en de == exploitant is dat de ene een methode is en de andere de operator.
  2. We kunnen == operatoren gebruiken voor referentievergelijking ( adresvergelijking ) en .equals() methode voor inhoud vergelijking . In eenvoudige woorden: == controleert of beide objecten naar dezelfde geheugenlocatie verwijzen, terwijl .equals() evalueert naar de vergelijking van waarden in de objecten.
  3. Als een klas dat niet doet overschrijf de equals-methode Vervolgens gebruikt het standaard de equals(Object o)-methode van de dichtstbijzijnde bovenliggende klasse die deze methode heeft overschreven. **Zien Waarom de equals(Object) en hashCode() methode overschrijven? in detail.

Voorbeeld:

String equals() methode en == operator in 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> >}> }>

voetnoten afwaardering
>

>

Uitvoer

true false true true>

Uitleg: Hier maken we twee objecten, namelijk s1 en s2.

  • Zowel s1 als s2 verwijzen naar dezelfde objecten.
  • Wanneer we de == operator gebruiken voor de vergelijking van s1 en s2, is het resultaat waar, aangezien beide dezelfde adressen hebben in de snaar constant zwembad.
  • Als u gelijken gebruikt, is het resultaat waar, omdat het alleen de waarden in s1 en s2 vergelijkt.

Java-stringpool

s1 = Hallo

s2 = Hallo

Java-hoop

s3 = Hallo

Laten we beide operators in detail begrijpen:

Gelijkheidsoperator(==)

We kunnen gelijkheidsoperatoren toepassen op elk primitief type, inclusief het Booleaanse type. We kunnen ook gelijkheidsoperatoren toepassen op objecttypen.

Voorbeeld:

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

klik op javascript
>

>

Uitvoer

false false true true>

Als we == toepassen voor objecttypen dan, daar moet compatibiliteit zijn tussen argumenttypen (ofwel kind naar ouder of ouder naar kind of hetzelfde type). Anders krijgen we een compileerfout.

Voorbeeld:

Java

Kat timf




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

>

>

Uitgang:

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

Java-tekenreeks is gelijk aan() Methode

Op Java is de String equals()-methode vergelijkt de twee gegeven strings op basis van de gegevens/inhoud van de string. Als de volledige inhoud van beide strings hetzelfde is, is het retourneert waar . Als niet alle karakters overeenkomen, dan is dit het geval retourneert vals .

Syntaxis:

Syntaxis : public boolean is gelijk aan (Object anotherObject)

Parameter :

  • een anderObject- Tekenreeks om te vergelijken

Geeft terug:

  • Booleaanse waarde :
    • WAAR- Als de strings gelijk zijn
    • vals- als de strings niet gelijk zijn

Voorbeeld:

String equals()-methode in Java

Java


java roert naar int



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

>

>

Uitgang:

true false false false true>

Uitleg: Hier gebruiken we de .equals-methode om te controleren of twee objecten dezelfde gegevens bevatten of niet.

  • In het bovenstaande voorbeeld maken we 3 Thread-objecten en 2 String-objecten.
  • In de eerste vergelijking controleren we of t1 == t3 of niet. Zoals wij beiden kennen t1 en t3 wijzen naar de hetzelfde voorwerp . Daarom retourneert het waar.
  • In de tweede vergelijking gebruiken we de operator == voor het vergelijken van de String-objecten en niet de inhoud van de objecten. Hier zijn beide objecten verschillend, en daarom is de uitkomst van deze vergelijking False.
  • Wanneer we 2 String-objecten vergelijken met de equals() operator, controleren we of beide objecten dezelfde gegevens bevatten of niet.
  • Beide objecten bevatten dezelfde tekenreeks, dat wil zeggen GEEKS. Daarom retourneert het waar.

Lees ook:

  • Character.equals() methode in Java met voorbeelden
  • ==, equals(), CompareTo(), equalsIgnoreCase() en Compare()

Conclusie

De Java string equals() methode en == operator worden beide gebruikt om tekenreeksen in Java te vergelijken. In deze tutorial hebben we de ==operator en String equals() methode in Java behandeld met voorbeelden.

  Read More     String Methods in Java>

Verschil tussen == en .equals() methode - Veelgestelde vragen

1. Wat is het verschil tussen str1 == str2 en str1 is gelijk aan str2?

In Java retourneert str1==str2 true als str1 en str2 strings zijn met dezelfde inhoud. Dit komt omdat strings met dezelfde inhoud op dezelfde locatie worden opgeslagen.

str1.equals(str2) retourneert true als str1 en str 2 verschillende stringobjecten zijn, maar dezelfde inhoud hebben.

2. Wat is het verschil tussen == en equals bij stringvergelijking?

De string is gelijk aan() methode vergelijkt twee tekenreeksen en retourneert waar als alle tekens in beide tekenreeksen overeenkomen, retourneert anders onwaar.

De == operator vergelijkt de referentie- of geheugenlocatie van objecten in een heap, ongeacht of ze naar dezelfde locatie verwijzen of niet.

3. Wat zijn de regels van de equals()-methode?

  1. Reflexiviteit: Voor elk object x moet x.equals(x) altijd true retourneren.
  2. Symmetrie : Als x.equals(y) true retourneert, dan moet y.equals(x) ook true retourneren.
  3. Transitiviteit : Als x.equals(y) en y.equals(z) beide waar zijn, dan moet x.equals(z) ook waar zijn.
  4. Samenhang : Meerdere aanroepen van x.equals(y) zouden hetzelfde resultaat moeten opleveren.
  5. Niet-nietigheid: De equals() methode mag nooit true retourneren in vergelijking met null.