Razlika med primerjavo niza z uporabo metode == in .equals() v Javi
Oba metoda equals(). in == operater se uporabljajo za primerjavo dveh objektov v Javi.
The Metoda Java string equals(). , primerja dva niza in vrne true, če se vsi znaki ujemajo v obeh nizih, sicer vrne false.
The == operater primerja referenčno ali pomnilniško lokacijo objektov v kupu, ne glede na to, ali kažejo na isto lokacijo ali ne.
Kadarkoli ustvarimo objekt z uporabo operatorja novo , bo ustvaril a novo pomnilniško mesto za ta predmet. Zato uporabimo operator ==, da preverimo, ali sta pomnilniška lokacija ali naslov dveh objektov enaka ali ne.
Na splošno sta oba operatorja equals() in == v Java se uporabljajo za primerjavo predmetov za preverjanje enakosti, vendar je tukaj nekaj razlik med obema:
- Glavna razlika med metoda .equals(). in == operater je, da je eno metoda, drugo pa operator.
- Za referenčno primerjavo lahko uporabimo operatorje == ( primerjava naslovov ) in metoda .equals() za vsebinska primerjava . Preprosto povedano, == preveri, ali oba objekta kažeta na isto pomnilniško lokacijo, medtem ko .equals() oceni primerjavo vrednosti v objektih.
- Če razred ne preglasi metodo equals , potem privzeto uporabi metodo equals(Object o) najbližjega nadrejenega razreda, ki je preglasil to metodo. **Glej Zakaj preglasiti metodo equals(Object) in hashCode()? Podrobno.
primer:
Metoda String equals() in operator == v Javi.
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> > }> }> |
Izhod
true false true true
Pojasnilo: Tukaj ustvarimo dva objekta, in sicer s1 in s2.
- Tako s1 kot s2 se nanašata na iste objekte.
- Ko uporabimo operator == za primerjavo s1 in s2, je rezultat resničen, saj imata oba enaka naslova v vrvica stalni bazen.
- Če uporabimo enako, je rezultat resničen, ker primerja le vrednosti, podane v s1 in s2.
Bazen nizov Java
| s1 = POZDRAVLJENI |
| s2 = POZDRAVLJENI |
Java Heap
| s3 = POZDRAVLJENI |
Naj podrobneje razumemo oba operaterja:
Operator enakosti (==)
Operatorje enakosti lahko uporabimo za vsak primitivni tip, vključno z logičnim tipom. Za tipe objektov lahko uporabimo tudi operatorje enakosti.
primer:
== operater v Javi.
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> );> > }> }> |
Izhod
false false true true
Če uporabimo == za tipe objektov, potem mora biti združljivost med vrstami argumentov (bodisi otrok staršu ali starš otroku ali isti tip). V nasprotnem primeru bomo prejeli napako med prevajanjem.
primer:
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);> > }> }> |
Izhod:
false false // error: incomparable types: Thread and String
Metoda Java String equals().
V Javi je Metoda String equals(). primerja dva podana niza na podlagi podatkov/vsebine niza. Če je vsa vsebina obeh nizov enaka, je vrne true . Če se vsi znaki ne ujemajo, potem je vrne false .
Sintaksa:
Sintaksa : javno logično je enako (Object anotherObject)
Parameter :
- drug predmet- Niz za primerjavo
Vrne:
- Logična vrednost :
- prav- Če so nizi enaki
- false- če nizi niso enaki
primer:
Metoda String equals() v Javi
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));> > }> }> |
Izhod:
true false false false true
Pojasnilo: Tukaj uporabljamo metodo .equals za preverjanje, ali dva objekta vsebujeta iste podatke ali ne.
- V zgornjem primeru ustvarimo 3 objekte Thread in 2 predmeta String.
- Pri prvi primerjavi preverimo, ali je t1 == t3 ali ne. Kot vemo oba t1 in t3 kažeta na isti predmet . Zato se vrne true.
- Pri drugi primerjavi uporabljamo operator == za primerjavo objektov String in ne vsebine objektov. Tukaj sta oba predmeta različna, zato je rezultat te primerjave False.
- Ko primerjamo 2 objekta String z operatorjem equals(), potem preverjamo, ali oba objekta vsebujeta iste podatke ali ne.
- Oba objekta vsebujeta isti niz, tj. GEEKS. Zato se vrne true.
Preberite tudi:
- Metoda Character.equals() v Javi s primeri
- ==, equals(), compareTo(), equalsIgnoreCase() in compare()
Zaključek
Metoda Java string equals() in operator == se uporabljata za primerjavo nizov v Javi. V tej vadnici smo s primeri obravnavali ==operator in metodo String equals() v Javi.
Read More String Methods in Java
Razlika med metodo == in .equals() - Pogosta vprašanja
1. Kakšna je razlika med str1 == str2 in str1 je enako str2?
V Javi str1==str2 vrne true, če sta str1 in str2 niza z enako vsebino. To je zato, ker so nizi z isto vsebino shranjeni na isti lokaciji.
str1.equals(str2) bo vrnil true, če sta str1 in str 2 različna objekta niza, vendar imata enako vsebino.
2. Kakšna je razlika med == in equals pri primerjavi nizov?
The metoda string equals(). primerja dva niza in vrne true, če se vsi znaki ujemajo v obeh nizih, sicer vrne false.
Operator == primerja referenčno ali pomnilniško lokacijo objektov v kopici, ne glede na to, ali kažejo na isto lokacijo ali ne.
3. Kakšna so pravila metode equals()?
- Refleksivnost: Za vsak predmet x mora x.equals(x) vedno vrniti true.
- Simetrija : Če x.equals(y) vrne true, potem mora y.equals(x) prav tako vrniti true.
- Prehodnost : Če sta x.equals(y) in y.equals(z) oba resnična, mora biti tudi x.equals(z) resničen.
- Doslednost : Večkratni klici x.equals(y) bi morali vrniti enak rezultat.
- Neničnost: Metoda equals() nikoli ne sme vrniti true v primerjavi z null.