Trong bài viết này, chúng ta sẽ tìm hiểu sự khác biệt giữa toán tử == và phương thức equals() trong Java. Toán tử == kiểm tra xem hai toán hạng có tham chiếu đến cùng một đối tượng hay không. Phương thức equals() so sánh nội dung thực tế của hai chuỗi.
Ví dụ minh họa
Đầu vào:
Chuỗi thứ nhất: abcde Chuỗi thứ hai: 12345
Đầu ra mong muốn:
So sánh bằng ==: false So sánh bằng equals(): false
Thuật toán
- Bắt đầu
- Khai báo hai chuỗi
input_string_1,input_string_2và hai booleanresult_1,result_2 - Gán giá trị (dùng
new String()để tạo đối tượng riêng biệt) - So sánh bằng
==gán vàoresult_1 - So sánh bằng
equals()gán vàoresult_2 - Hiển thị kết quả
- Kết thúc
Ví dụ 1: Xử lý trực tiếp trong main
public class Compare {
public static void main(String[] args) {
String input_string_1 = new String("abcde");
System.out.println("Chuỗi thứ nhất: " + input_string_1);
String input_string_2 = new String("12345");
System.out.println("Chuỗi thứ hai: " + input_string_2);
boolean result_1 = (input_string_1 == input_string_2);
System.out.println("\nSo sánh bằng ==: " + result_1);
boolean result_2 = input_string_1.equals(input_string_2);
System.out.println("So sánh bằng equals(): " + result_2);
}
}
Kết quả
Chuỗi thứ nhất: abcde Chuỗi thứ hai: 12345 So sánh bằng ==: false So sánh bằng equals(): false
Ví dụ 2: Sử dụng phương thức tách biệt (OOP)
public class Demo {
static void compare(String input_string_1, String input_string_2) {
boolean result_1 = (input_string_1 == input_string_2);
System.out.println("\nSo sánh bằng ==: " + result_1);
boolean result_2 = input_string_1.equals(input_string_2);
System.out.println("So sánh bằng equals(): " + result_2);
}
public static void main(String[] args) {
String input_string_1 = new String("abcde");
System.out.println("Chuỗi thứ nhất: " + input_string_1);
String input_string_2 = new String("12345");
System.out.println("Chuỗi thứ hai: " + input_string_2);
compare(input_string_1, input_string_2);
}
}
Kết quả
Chuỗi thứ nhất: abcde Chuỗi thứ hai: 12345 So sánh bằng ==: false So sánh bằng equals(): false
Lưu ý quan trọng: == so sánh tham chiếu (địa chỉ bộ nhớ), equals() so sánh nội dung. Với String literal (vd: "abc"), Java có thể dùng chung đối tượng trong String Pool.