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.
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ą.
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ą.
03 pav. Mokinių klasė su lygiais ir maišos kodu
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.