Begge equals() metode og == operatør brukes til å sammenligne to objekter i Java.
De Java string equals() metode , sammenligner to strenger og returnerer sann hvis alle tegnene samsvarer i begge strengene, ellers returnerer false.
De == operatør sammenligner referanse- eller minneplasseringen til objekter i en haug, enten de peker til samme plassering eller ikke.
Hver gang vi lager et objekt ved hjelp av operatoren ny , vil det skape en ny minneplassering for det objektet. Så vi bruker ==-operatoren for å sjekke at minneplasseringen eller adressen til to objekter er like eller ikke.
Generelt er både lik() og ==-operatorene i Java brukes til å sammenligne objekter for å sjekke likhet, men her er noen av forskjellene mellom de to:
- Hovedforskjellen mellom .equals()-metoden og == operatør er at den ene er en metode, og den andre er operatøren.
- Vi kan bruke ==-operatorer for referansesammenligning ( adressesammenligning ) og .equals() metode for sammenligning av innhold . Med enkle ord, == sjekker om begge objektene peker til samme minneplassering, mens .equals() evaluerer til sammenligning av verdier i objektene.
- Hvis en klasse ikke gjør det overstyre likhetsmetoden , så bruker den som standard equals(Object o)-metoden til den nærmeste overordnede klassen som har overstyrt denne metoden. **Se Hvorfor overstyre equals(Object) og hashCode()-metoden? i detalj.
Eksempel:
String er lik() metode og == operator i Java.
Java
metode understreng 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> >}> }> |
>
>Produksjon
true false true true>
Forklaring: Her lager vi to objekter, nemlig s1 og s2.
- Både s1 og s2 refererer til de samme objektene.
- Når vi bruker ==-operatoren for s1- og s2-sammenligning, er resultatet sant da begge har samme adresser i streng konstant basseng.
- Ved å bruke lik, er resultatet sant fordi det bare sammenligner verdiene gitt i s1 og s2.
Java String Pool
| s1 = HEI |
| s2 = HEI |
Java-haug
| s3 = HEIL |
La oss forstå begge operatørene i detalj:
Likestillingsoperatør(==)
Vi kan bruke likhetsoperatører for alle primitive typer, inkludert den boolske typen. Vi kan også bruke likhetsoperatorer for objekttyper.
Eksempel:
== operatør 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>);> >}> }> |
>
>Produksjon
false false true true>
Hvis vi bruker == for objekttyper da, der bør være kompatibilitet mellom argumenttyper (enten barn til forelder eller forelder til barn eller samme type). Ellers vil vi få en kompileringstidsfeil.
Eksempel:
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);> >}> }> |
>
faktoriell java
>
Produksjon:
false false // error: incomparable types: Thread and String>
Java String equals() Metode
I Java er String equals()-metoden sammenligner de to gitte strengene basert på data/innhold i strengen. Hvis alt innholdet i begge strengene er det samme, vil det returnerer sant . Hvis alle tegnene ikke samsvarer, så er det returnerer usant .
Syntaks:
Syntaks : offentlig boolsk lik(Object anotherObject)
Parameter :
- annet objekt- String som skal sammenlignes
Returnerer:
- boolsk verdi :
- ekte- Hvis strenger er like
- falsk- hvis strenger ikke er like
Eksempel:
String equals()-metoden i Java
Java
kassen i git
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));> >}> }> |
>
>
Produksjon:
true false false false true>
Forklaring: Her bruker vi .equals-metoden for å sjekke om to objekter inneholder samme data eller ikke.
- I eksemplet ovenfor lager vi 3 trådobjekter og 2 strengobjekter.
- I den første sammenligningen sjekker vi om t1 == t3 eller ikke. Som vi kjenner begge deler t1 og t3 peker på samme objekt . Det er derfor det returnerer sant.
- I den andre sammenligningen bruker vi operatoren == for å sammenligne strengobjektene og ikke innholdet i objektene. Her er begge objektene forskjellige, og derfor er resultatet av denne sammenligningen falsk.
- Når vi sammenligner 2 strengobjekter med equals()-operatoren, sjekker vi at begge objektene inneholder samme data eller ikke.
- Begge objektene inneholder den samme strengen, dvs. NERD. Det er derfor det returnerer sant.
Les også:
- Character.equals()-metoden i Java med eksempler
- ==, lik(), compareTo(), equalsIgnoreCase() og compare()
Konklusjon
Java string equals() metode og == operator brukes begge til å sammenligne strenger i Java. I denne opplæringen har vi dekket ==operator og String equals()-metoden i Java med eksempler.
Read More String Methods in Java>
Forskjellen mellom == og .equals()-metoden- FAQs
1. Hva er forskjellen mellom str1 == str2 og str1 er lik str2?
I Java vil str1==str2 returnere true hvis str1 og str2 er strenger med samme innhold. Dette er fordi strenger med samme innhold lagres på samme sted.
str1.equals(str2) vil returnere true hvis str1 og str 2 er forskjellige strengobjekter, men har samme innhold.
2. Hva er forskjellen mellom == og lik i strengsammenligning?
De string equals()-metoden sammenligner to strenger og returnerer sann hvis alle tegnene samsvarer i begge strengene, ellers returnerer false.
Operatoren == sammenligner referanse- eller minneplasseringen til objekter i en haug, enten de peker til samme plassering eller ikke.
3. Hva er reglene for equals()-metoden?
- Refleksivitet: For ethvert objekt x, skal x.equals(x) alltid returnere true.
- Symmetri : Hvis x.equals(y) returnerer true, må y.equals(x) også returnere sant.
- Transitivitet : Hvis x.equals(y) og y.equals(z) begge er sanne, må x.equals(z) også være sann.
- Konsistens : Flere påkallelser av x.equals(y) skal returnere det samme resultatet.
- Ikke-ugyldighet: Metoden equals() skal aldri returnere true sammenlignet med null.