Sự khác biệt chính - bằng so với Mã băm trong Java
Dấu bằng tương tự như toán tử==, để kiểm tra nhận dạng đối tượng hơn là bình đẳng đối tượng. Mã băm là một phương thức mà một lớp chia nhỏ dữ liệu được lưu trữ trong một thể hiện của lớp đó thành một giá trị băm duy nhất, là một số nguyên có dấu 32 bit. Sự khác biệt chính giữa dấu bằng và Mã băm trong Java là dấu bằng được sử dụng để so sánh hai đối tượng trong khi Mã băm được sử dụng trong việc băm để quyết định phân loại đối tượng vào nhóm nào.
Bằng trong Java là gì?
Phương thức bằng được sử dụng để so sánh hai đối tượng. Phương thức bằng mặc định được định nghĩa trong lớp đối tượng. Việc triển khai đó tương tự như toán tử==. Hai tham chiếu đối tượng chỉ bằng nhau nếu chúng trỏ đến cùng một đối tượng. Có thể ghi đè phương thức bằng.
Hình 01: Chương trình Java bằng
Câu lệnh System.out.println (s1.equals (s2)) sẽ cho câu trả lời sai vì s1 và s2 đang tham chiếu đến hai đối tượng khác nhau. Nó tương tự như câu lệnh, System.out.println (s1==s2);
Câu lệnh System.out.println (s1.equals (s3)) sẽ cho câu trả lời đúng vì s1 và s3 đang tham chiếu đến cùng một đối tượng. Nó tương tự như câu lệnh, System.out.println (s1==s3);
Không có phương thức bằng trong lớp Học sinh. Do đó, các dấu bằng trong lớp Đối tượng được gọi. True chỉ được hiển thị nếu tham chiếu đối tượng trỏ đến cùng một đối tượng.
Hình 02: Chương trình Java bị ghi đè bằng
Theo chương trình trên, phương thức bằng được ghi đè. Một đối tượng được truyền cho phương thức và nó được nhập vào Student. Sau đó, các giá trị id được kiểm tra. Nếu các giá trị id tương tự nhau, nó sẽ trả về true. Nếu không, nó sẽ trả về false. Id của s1 và s2 là tương tự. Vì vậy, nó sẽ in true. Id của s1 và s3 cũng tương tự, vì vậy nó sẽ in true.
Mã băm trong Java là gì?
Mã băm được sử dụng trong quá trình băm để quyết định phân loại đối tượng vào nhóm nào. Một nhóm đối tượng có thể chia sẻ cùng một mã băm. Một hàm băm đúng có thể phân phối đồng đều các đối tượng thành các nhóm khác nhau.
Một Mã băm đúng có thể có các thuộc tính như sau. Giả sử rằng có hai đối tượng là obj1 và obj2. Nếu obj1.equals (obj2) là true, thì obj1.hashCode () bằng obj2.hashCode (). Nếu obj1.equals (obj2) là false, thì không nhất thiết obj1.hashCode () không bằng obj2.hashCode (). Hai đối tượng không bằng nhau cũng có thể có cùng một mã băm.
Hình 03: Lớp học sinh có mã bằng và mã băm
Hình 04: Chương trình chính
Lớp Student chứa các phương thức bằng và mã băm. Phương thức bằng trong lớp Sinh viên sẽ nhận một đối tượng. Nếu đối tượng là null, nó sẽ trả về false. Nếu các lớp của các đối tượng không giống nhau, nó sẽ trả về false. Các giá trị id được kiểm tra trong cả hai đối tượng. Nếu chúng giống nhau, nó sẽ trả về true. Nếu không, nó sẽ trả về false.
Trong chương trình chính, các đối tượng s1 và s2 được tạo. Khi gọi s1.equals (s2) sẽ cho kết quả true vì phương thức equals bị ghi đè và nó kiểm tra giá trị id của hai đối tượng. Mặc dù chúng đang đề cập đến hai đối tượng, nhưng câu trả lời là đúng vì giá trị id của s1 và s2 là như nhau. Vì s1.equals (s2) là đúng, mã băm của s1 và s2 phải bằng nhau. Việc in mã băm của s1 và s2 cho cùng một giá trị. Phương thức hashCode có thể được sử dụng với Bộ sưu tập như HashMap.
Sự khác biệt giữa Mã bằng và Mã băm trong Java là gì?
bằng so với Mã băm trong Java |
|
equals là một phương thức trong Java hoạt động tương tự như toán tử==, nhằm kiểm tra nhận dạng đối tượng hơn là bình đẳng đối tượng. | hashCode là một phương thức mà một lớp chia nhỏ dữ liệu được lưu trữ trong một phiên bản của lớp đó thành một giá trị băm duy nhất. |
Cách sử dụng | |
Phương thức bằng được sử dụng để so sánh hai đối tượng. | Phương thức này được sử dụng trong băm để quyết định nhóm nào một đối tượng nên được đặt vào. |
Tóm tắt - bằng so với Mã băm trong Java
Sự khác biệt về dấu bằng và Mã băm trong Java là dấu bằng được sử dụng để so sánh hai đối tượng trong khi Mã băm được sử dụng trong quá trình băm để quyết định phân loại đối tượng vào nhóm nào.