Spisu treści:
- Kluczowa różnica - równa się vs hashCode w Javie
- Co jest równe w Javie?
- Co to jest hashCode w Javie?
- Jaka jest różnica między equals a hashCode w Javie?
- Podsumowanie - równa się vs hashCode w Javie
Wideo: Różnica Między Equals I HashCode W Javie
2024 Autor: Mildred Bawerman | [email protected]. Ostatnio zmodyfikowany: 2023-12-16 08:41
Kluczowa różnica - równa się vs hashCode w Javie
Równość jest podobna do operatora ==, który służy do testowania tożsamości obiektu, a nie równości obiektu. HashCode to metoda, za pomocą której klasa niejawnie lub jawnie dzieli dane przechowywane w wystąpieniu klasy na pojedynczą wartość skrótu, która jest 32-bitową liczbą całkowitą ze znakiem. Kluczową różnicą między equals i hashCode w Javie jest to, że equals jest używany do porównywania dwóch obiektów, podczas gdy hashCode jest używany do haszowania, aby zdecydować, do której grupy obiekt należy przypisać.
ZAWARTOŚĆ
1. Omówienie i kluczowe różnice
2. Co jest równe w Javie
3. Co to jest hashCode w Javie
4. Bezpośrednie porównanie - equals vs hashCode w Javie w formie tabelarycznej
5. Podsumowanie
Co jest równe w Javie?
Metoda equals służy do porównywania dwóch obiektów. Domyślna metoda equals jest zdefiniowana w klasie obiektów. Ta implementacja jest podobna do operatora ==. Dwa odwołania do obiektów są równe tylko wtedy, gdy wskazują na ten sam obiekt. Możliwe jest nadpisanie metody równości.
Rysunek 01: Program Java z równymi
Instrukcja System.out.println (s1.equals (s2)) da odpowiedź fałszywą, ponieważ s1 i s2 odnoszą się do dwóch różnych obiektów. Było podobne do instrukcji System.out.println (s1 == s2);
Instrukcja System.out.println (s1.equals (s3)) da odpowiedź „prawda”, ponieważ s1 i s3 odnoszą się do tego samego obiektu. Było podobne do instrukcji System.out.println (s1 == s3);
W klasie Student nie ma metody równości. W związku z tym wywoływana jest równość w klasie Object. Prawda jest wyświetlana tylko wtedy, gdy odniesienie do obiektu wskazuje na ten sam obiekt.
Rysunek 02: Program Java z przesłoniętym równa się
Zgodnie z powyższym programem, metoda equals jest nadpisywana. Obiekt jest przekazywany do metody i jest rzutowany na Student. Następnie sprawdzane są wartości id. Jeśli wartości id są podobne, zwróci true. Jeśli nie, zwróci fałsz. Identyfikatory s1 i s2 są podobne. Więc wydrukuje prawda. Identyfikatory s1 i s3 są również podobne, więc wyświetli się prawda.
Co to jest hashCode w Javie?
HashCode jest używany w haszowaniu, aby zdecydować, do której grupy należy przypisać obiekt. Grupa obiektów może mieć ten sam hashCode. Prawidłowa funkcja mieszająca może równomiernie rozłożyć obiekty na różne grupy.
Prawidłowy hashCode może mieć następujące właściwości. Załóżmy, że istnieją dwa obiekty, takie jak obj1 i obj2. Jeśli obj1.equals (obj2) ma wartość true, to obj1.hashCode () jest równe obj2.hashCode (). Jeśli obj1.equals (obj2) ma wartość false, nie jest konieczne, aby obj1.hashCode () nie było równe obj2.hashCode (). Dwa nierówne obiekty mogą również mieć ten sam hashCode.
Rysunek 03: Klasa ucznia z równościami i hashCode
Rysunek 04: Program główny
Klasa Student zawiera metody equals i hashCode. Metoda equals w klasie Student otrzyma obiekt. Jeśli obiekt ma wartość null, zwróci wartość false. Jeśli klasy obiektów nie są takie same, zwróci wartość false. Wartości id są sprawdzane w obu obiektach. Jeśli są podobne, zwróci prawdę. W przeciwnym razie zwróci fałsz.
W programie głównym tworzone są obiekty s1 i s2. Wywołanie s1.equals (s2) daje wartość true, ponieważ metoda equals jest nadpisywana i sprawdza wartości id dwóch obiektów. Mimo że odnoszą się do dwóch obiektów, odpowiedź jest prawdziwa, ponieważ wartości id s1 i s2 są takie same. Ponieważ wartość s1.equals (s2) jest prawdą, hashCode s1 i s2 powinny być równe. Wydrukowanie hashCode s1 i s2 daje tę samą wartość. Metody hashCode można używać z kolekcjami, takimi jak HashMap.
Jaka jest różnica między equals a hashCode w Javie?
Porównaj środek artykułu przed tabelą
equals vs hashCode w Javie |
|
equals to metoda w Javie, która działa podobnie do operatora ==, który służy do testowania tożsamości obiektu, a nie równości obiektu. | hashCode to metoda, za pomocą której klasa niejawnie lub jawnie dzieli dane przechowywane w instancji klasy na pojedynczą wartość skrótu. |
Stosowanie | |
Metoda equals służy do porównywania dwóch obiektów. | Metoda jest używana w haszowaniu, aby zdecydować, do której grupy należy umieścić obiekt. |
Podsumowanie - równa się vs hashCode w Javie
Różnica w equals i hashCode w Javie polega na tym, że equals jest używany do porównywania dwóch obiektów, podczas gdy hashCode jest używany do haszowania, aby zdecydować, do której grupy należy przypisać obiekt.
Zalecane:
Różnica Między Zmiennymi A Literałami Danych W Javie
Kluczowa różnica - zmienne a literały danych w Javie Program komputerowy to zestaw instrukcji do wykonania zadania. Wymagane jest przechowywanie danych podczas progr
Różnica Między Rzutami A Rzutami W Javie
Kluczowa różnica - rzut a rzut w Javie Podczas programowania mogą wystąpić błędy. Błąd w programie daje nieoczekiwany skutek lub może się zakończyć
Różnica Między Tym A Super W Javie
Kluczowa różnica - to w porównaniu z super w Javie Słowa kluczowe ' to ' i ' super ' są używane w programowaniu w języku Java. Tych słów kluczowych nie można używać jako zmiennych ani żadnych innych
Różnica Między Przeciążaniem A Zastępowaniem W Javie
Kluczowa różnica - Przeciążanie a zastępowanie w Java Object-Oriented Programming (OOP) jest głównym paradygmatem w tworzeniu oprogramowania. To jest metodologia
Różnica Między StringBuffer String A StringBuilder W Javie
Kluczowa różnica - String vs StringBuffer vs StringBuilder w Javie String, StringBuffer i String Builder to klasy w Javie. Ciąg jest szeroko stosowany w Ja