Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Chương trình Java phân biệt toán tử == và phương thức equals()

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

  1. Bắt đầu
  2. Khai báo hai chuỗi input_string_1, input_string_2 và hai boolean result_1, result_2
  3. Gán giá trị (dùng new String() để tạo đối tượng riêng biệt)
  4. So sánh bằng == gán vào result_1
  5. So sánh bằng equals() gán vào result_2
  6. Hiển thị kết quả
  7. 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.