Skirtumas tarp lygių ir maišos kodo Java

Turinys:

Skirtumas tarp lygių ir maišos kodo Java
Skirtumas tarp lygių ir maišos kodo Java

Video: Skirtumas tarp lygių ir maišos kodo Java

Video: Skirtumas tarp lygių ir maišos kodo Java
Video: Equals and Hashcode Contract in Java [Important Java Interview Question] | Code Decode 2024, Liepa
Anonim

Pagrindinis skirtumas – lygus su maišos kodu Java

The equals yra panašus į==operatorių, kuris skirtas objekto tapatumui, o ne objekto lygybei patikrinti. Maišos kodas yra metodas, kuriuo klasė netiesiogiai arba aiškiai suskaido klasės egzemplioriuje saugomus duomenis į vieną maišos reikšmę, kuri yra 32 bitų sveikasis skaičius. Pagrindinis skirtumas tarp lygybės ir maišos kodo „Java“yra tas, kad lygybė naudojama dviejų objektų palyginimui, o maišos kodas naudojamas maišos nustatymui, siekiant nuspręsti, į kurią grupę objektas turėtų būti suskirstytas.

Kas yra lygu Java?

Lygių metodas naudojamas dviejų objektų palyginimui. Numatytasis lygu metodas yra apibrėžtas objektų klasėje. Šis įgyvendinimas yra panašus į==operatorių. Dviejų objektų nuorodos yra lygios tik tuo atveju, jei jos nurodo į tą patį objektą. Galima nepaisyti lygybės metodo.

Skirtumas tarp lygių ir maišos kodo Java
Skirtumas tarp lygių ir maišos kodo Java

01 pav.: Java programa su lygiu

Teiginys System.out.println(s1.equals(s2)) duos atsakymą klaidingą, nes s1 ir s2 nurodo du skirtingus objektus. Tai buvo panašu į teiginį System.out.println(s1==s2);

Teiginys System.out.println(s1.equals(s3)) duos atsakymą teisingą, nes s1 ir s3 nurodo tą patį objektą. Tai buvo panašu į teiginį System.out.println(s1==s3);

Mokinių klasėje nėra lygybės metodo. Todėl lygūs objektų klasėje vadinami. „True“rodoma tik tuo atveju, jei objekto nuoroda nurodo į tą patį objektą.

Skirtumas tarp lygių ir maišos kodo Java_Paveikslėlyje 02
Skirtumas tarp lygių ir maišos kodo Java_Paveikslėlyje 02

02 pav.: Java programa su nepaisymu lygi

Pagal aukščiau pateiktą programą, lygybės metodas yra nepaisomas. Objektas perduodamas metodui, o jo tipas perduodamas Mokiniui. Tada patikrinamos ID reikšmės. Jei id reikšmės yra panašios, bus grąžinta tiesa. Jei ne, grįš klaidinga. S1 ir s2 ID yra panašūs. Taigi, tai bus tiesa. S1 ir s3 ID taip pat yra panašūs, todėl bus spausdinama tiesa.

Kas yra „Java“hashCode?

HashCode naudojamas maišos nustatymui, kad būtų nuspręsta, kuriai grupei objektas turi būti priskirtas. Objektų grupė gali bendrinti tą patį maišos kodą. Tinkama maišos funkcija gali tolygiai paskirstyti objektus į skirtingas grupes.

Teisingas maišos kodas gali turėti tokias savybes. Tarkime, kad yra du objektai: obj1 ir obj2. Jei obj1.equals(obj2) yra tiesa, tada obj1.hashCode() yra lygus obj2.hashCode(). Jei obj1.equals(obj2) yra klaidinga, nebūtina, kad obj1.hashCode() nebūtų lygus obj2.hashCode(). Du nelygūs objektai taip pat gali turėti tą patį maišos kodą.

Skirtumas tarp lygių ir maišos kodo Java_Paveikslėlyje 03
Skirtumas tarp lygių ir maišos kodo Java_Paveikslėlyje 03

03 pav. Mokinių klasė su lygiais ir maišos kodu

Pagrindinis skirtumas tarp lygių ir maišos kodo Java
Pagrindinis skirtumas tarp lygių ir maišos kodo Java

04 pav.: Pagrindinė programa

Studentų klasėje yra lygių ir hashCode metodai. Mokinių klasėje taikomas lygybės metodas gaus objektą. Jei objektas yra nulinis, jis grąžins klaidingą. Jei objektų klasės nėra vienodos, jis grąžins klaidingą. ID reikšmės tikrinamos abiejuose objektuose. Jei jie yra panašūs, tai bus tiesa. Priešingu atveju jis bus klaidingas.

Pagrindinėje programoje sukuriami objektai s1 ir s2. Iškviečiant s1.equals(s2) duos true, nes lygybės metodas yra nepaisomas ir jis patikrina dviejų objektų id reikšmes. Nors jie nurodo du objektus, atsakymas yra teisingas, nes s1 ir s2 id reikšmės yra vienodos. Kadangi s1.equals(s2) yra teisingas, s1 ir s2 maišos kodas turėtų būti lygus. Spausdinant maišos kodą s1 ir s2, gaunama ta pati reikšmė. HashCode metodas gali būti naudojamas su kolekcijomis, pvz., HashMap.

Kuo skiriasi lygybės ir maišos kodas Java?

lygus su maišos kodu Java

equals yra Java metodas, veikiantis panašiai kaip==operatorius, kurio tikslas yra patikrinti objekto tapatybę, o ne objekto lygybę. hashCode yra metodas, kuriuo klasė netiesiogiai arba aiškiai suskaido klasės egzemplioriuje saugomus duomenis į vieną maišos reikšmę.
Naudojimas
Metodas lygus naudojamas dviem objektams palyginti. Šis metodas naudojamas maišos nustatymui, siekiant nuspręsti, į kurią grupę objektas turi būti įtrauktas.

Santrauka – lygu su maišos kodu Java

Skirtumas tarp lygių ir maišos kodų Java yra tas, kad lygybė naudojama dviejų objektų palyginimui, o maišos kodas naudojamas maišos nustatymui, siekiant nuspręsti, į kurią grupę objektas turi būti suskirstytas.

Rekomenduojamas: