Trong Java, việc so sánh các đối tượng có thể được thực hiện bằng hai cách: sử dụng toán tử ==
và phương thức equals()
. Mặc dù cả hai đều được sử dụng để so sánh, nhưng chúng có cách thức hoạt động khác nhau và mục đích khác nhau. Bài viết này sẽ giải thích chi tiết sự khác biệt giữa ==
và equals()
.
==
==
được sử dụng để so sánh hai giá trị hoặc hai đối tượng. Khi sử dụng với kiểu nguyên thủy, ==
so sánh giá trị thực tế của biến. Khi sử dụng với đối tượng, ==
so sánh địa chỉ bộ nhớ của chúng.int a = 5; int b = 5; System.out.println(a == b); // Kết quả: true String str1 = new String("Hello"); String str2 = new String("Hello"); System.out.println(str1 == str2); // Kết quả: false (so sánh địa chỉ bộ nhớ)
Trong ví dụ trên, str1
và str2
là hai đối tượng khác nhau trong bộ nhớ, mặc dù chúng có nội dung giống nhau.
equals()
equals()
được định nghĩa trong lớp Object
và có thể được ghi đè (override) trong các lớp khác. Mục đích chính của equals()
là so sánh nội dung của hai đối tượng thay vì địa chỉ bộ nhớ của chúng.String str1 = new String("Hello"); String str2 = new String("Hello"); System.out.println(str1.equals(str2)); // Kết quả: true (so sánh nội dung)
Trong ví dụ này, phương thức equals()
so sánh nội dung của hai chuỗi, do đó kết quả là true
.
Tiêu chí | == | equals() |
---|---|---|
So sánh kiểu dữ liệu | So sánh giá trị (đối với kiểu nguyên thủy) và địa chỉ bộ nhớ (đối với đối tượng) | So sánh nội dung của đối tượng |
Mặc định | Không thể ghi đè | Có thể ghi đè |
Sử dụng | Dùng để kiểm tra xem hai tham chiếu có trỏ đến cùng một đối tượng hay không | Dùng để kiểm tra nội dung của hai đối tượng |
Thực hiện | Nhanh hơn (không cần kiểm tra nội dung) | Chậm hơn (cần kiểm tra nội dung) |
==
:
equals()
:
equals()
.Sự khác biệt giữa ==
và phương thức equals()
trong Java là rất quan trọng để hiểu cách so sánh các đối tượng. Toán tử ==
so sánh địa chỉ bộ nhớ hoặc giá trị của kiểu nguyên thủy, trong khi phương thức equals()
so sánh nội dung của các đối tượng. Để tránh các lỗi tiềm ẩn khi so sánh đối tượng, bạn nên sử dụng phương thức equals()
khi cần kiểm tra nội dung của các đối tượng trong Java.