Gan vienāds() metode un == operators tiek izmantoti, lai salīdzinātu divus objektus Java.
The Java string equals() metode , salīdzina divas virknes un atgriež vērtību True, ja visas rakstzīmes atbilst abās virknēs, pretējā gadījumā atgriež false.
The == operators salīdzina kaudzē esošo objektu atsauces vai atmiņas atrašanās vietu neatkarīgi no tā, vai tie norāda uz vienu un to pašu vietu vai nē.
Ikreiz, kad mēs izveidojam objektu, izmantojot operatoru jauns , tas radīs a jauna atmiņas vieta šim objektam. Tāpēc mēs izmantojam == operatoru, lai pārbaudītu, vai divu objektu atmiņas atrašanās vieta vai adrese ir vienāda vai nē.
Kopumā abi vienādi () un == operatori in Java tiek izmantoti, lai salīdzinātu objektus, lai pārbaudītu vienlīdzību, taču šeit ir dažas atšķirības starp abiem:
- Galvenā atšķirība starp .equals() metode un == operators ir tas, ka viena ir metode, bet otra ir operators.
- Mēs varam izmantot == operatorus atsauces salīdzināšanai ( adrešu salīdzinājums ) un .equals() metodi satura salīdzinājums . Vienkāršiem vārdiem sakot, == pārbauda, vai abi objekti norāda uz vienu un to pašu atmiņas vietu, savukārt .equals() novērtē objektu vērtību salīdzinājumu.
- Ja klase to nedara ignorēt vienlīdzības metodi , pēc noklusējuma tā izmanto tuvākās vecākklases metodi equals(Object o), kas ir ignorējusi šo metodi. ** Skat Kāpēc ignorēt vienāds(Object) un hashCode() metodi? detalizēti.
Piemērs:
String equals() metodi un == operatoru 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> >}> }> |
>
>Izvade
true false true true>
Paskaidrojums: Šeit mēs izveidojam divus objektus, proti, s1 un s2.
- Gan s1, gan s2 attiecas uz tiem pašiem objektiem.
- Ja mēs izmantojam == operatoru s1 un s2 salīdzināšanai, rezultāts ir patiess, jo abiem ir vienādas adreses virkne pastāvīgs baseins.
- Izmantojot vienādus, rezultāts ir patiess, jo tas tikai salīdzina vērtības, kas norādītas s1 un s2.
Java stīgu baseins
| s1 = SVEIKA |
| s2 = SVEIKA |
Java kaudze
| s3 = SVEIKA |
Ļaujiet mums sīkāk izprast abus operatorus:
Vienlīdzības operators(==)
Mēs varam piemērot vienlīdzības operatorus katram primitīvajam tipam, ieskaitot Būla tipu. Objektu tipiem varam piemērot arī vienlīdzības operatorus.
Piemērs:
== operators 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>);> >}> }> |
>
>Izvade
false false true true>
Ja objektu tipiem piemērojam ==, tad tur jābūt saderībai starp argumentu veidiem (vai nu no bērna vecākiem, vai no vecākiem bērnam vai tāda paša veida). Pretējā gadījumā mēs saņemsim kompilēšanas laika kļūdu.
Piemērs:
kā java konvertēt no int uz virkni
Java
apakšvirknes virkne 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);> >}> }> |
>
>
Izvade:
false false // error: incomparable types: Thread and String>
Java String equals() metode
Java valodā, String equals() metode salīdzina abas dotās virknes, pamatojoties uz virknes datiem/saturu. Ja viss abu virkņu saturs ir vienāds, tas atgriež patiesību . Ja visas rakstzīmes nav saskaņotas, tad tā atgriež viltus .
Sintakse:
Sintakse : publiskais Būla ir vienāds (Objekts citsObjekts)
Parametrs :
- cits objekts - Salīdzināmā virkne
Atgriež:
- Būla vērtība :
- taisnība- Ja virknes ir vienādas
- viltus- ja virknes nav vienādas
Piemērs:
String equals() metode 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));> >}> }> |
>
>
Izvade:
true false false false true>
Paskaidrojums: Šeit mēs izmantojam .equals metodi, lai pārbaudītu, vai divos objektos ir vienādi dati.
- Iepriekš minētajā piemērā mēs izveidojam 3 Thread objektus un 2 String objektus.
- Pirmajā salīdzinājumā mēs pārbaudām, vai t1 == t3 vai nē. Kā mēs zinām abus t1 un t3 norāda uz tas pats objekts . Tāpēc tas ir patiess.
- Otrajā salīdzinājumā mēs izmantojam operatoru ==, lai salīdzinātu virknes objektus, nevis objektu saturu. Šeit abi objekti ir atšķirīgi, un līdz ar to šī salīdzinājuma rezultāts ir nepatiess.
- Kad mēs salīdzinām 2 stīgu objektus, izmantojot operatoru equals (), mēs pārbaudām, vai abi objekti satur vienus un tos pašus datus.
- Abos objektos ir viena un tā pati virkne, t.i., GEEKS. Tāpēc tas ir patiess.
Lasi arī:
- Character.equals() metode Java ar piemēriem
- ==, vienāds(), salīdzinātTo(), vienādsIgnoreCase() un salīdzināt()
Secinājums
Java virkņu salīdzināšanai tiek izmantota gan metode Java string equals(), gan operators ==. Šajā apmācībā mēs esam aplūkojuši Java metodi ==operator un String equals() ar piemēriem.
Read More String Methods in Java>
Atšķirība starp == un .equals() metodi — FAQ
1. Kāda ir atšķirība starp str1 == str2 un str1 ir vienāds ar str2?
Java versijā str1==str2 atgriezīsies true, ja str1 un str2 ir virknes ar tādu pašu saturu. Tas ir tāpēc, ka virknes ar tādu pašu saturu tiek glabātas vienā un tajā pašā vietā.
Str1.equals(str2) atgriezīs patieso vērtību, ja str1 un str 2 ir dažādi virknes objekti, bet tiem ir vienāds saturs.
2. Kāda ir atšķirība starp == un vienādiem virkņu salīdzināšanā?
The String equals() metodi salīdzina divas virknes un atgriež vērtību True, ja visas rakstzīmes sakrīt abās virknēs, pretējā gadījumā atgriež vērtību false.
== operators salīdzina kaudzē esošo objektu atsauces vai atmiņas atrašanās vietu neatkarīgi no tā, vai tie norāda uz vienu un to pašu vietu vai nē.
3. Kādi ir vienādības() metodes noteikumi?
- Refleksivitāte: Jebkuram objektam x x.equals(x) vienmēr jāatgriež patiess.
- Simetrija : Ja x.equals(y) atgriež patieso vērtību, tad y.equals(x) arī ir jāatgriež patiess.
- Transitivitāte : Ja x.equals(y) un y.equals(z) ir patiesi, tad arī x.equals(z) ir jābūt patiesam.
- Konsekvence : Vairākām x.equals(y) izsaukšanām ir jāatgriež vienāds rezultāts.
- Neanulitāte: Metodei equals() nekad nevajadzētu atgriezt patiesu, ja salīdzina ar nulli.