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

Khác biệt giữa == và equals() trong Java

Trong Java, cả == và equals() đều dùng để so sánh, nhưng có khác biệt căn bản:

STT Tiêu chí == equals()
1 Loại Toán tử (operator) Phương thức của class Object
2 So sánh So sánh tham chiếu (reference) - xem 2 biến có trỏ đến cùng 1 object không So sánh nội dung (content) - xem 2 object có giá trị bằng nhau không
3 Ghi đè Không thể override Có thể override (ví dụ String, Integer đã override)

Ví dụ minh họa

public class JavaTester {
    public static void main(String args[]) {
        String s1 = new String("TUTORIALSPOINT");
        String s2 = new String("TUTORIALSPOINT");
        
        // So sánh tham chiếu
        System.out.println(s1 == s2);       // false (2 object khác nhau)
        
        // So sánh nội dung
        System.out.println(s1.equals(s2));  // true (nội dung giống nhau)
        
        // Kiểu nguyên thủy
        System.out.println(10 == 10);       // true
        System.out.println('a' == 'a');     // true
    }
}

Kết quả

false
true
true
true

Lưu ý quan trọng

  • Với primitive types (int, char, boolean...): == so sánh giá trị
  • Với objects: == so sánh địa chỉ bộ nhớ, equals() so sánh nội dung
  • Luôn dùng equals() để so sánh String, Integer, Date... trừ khi muốn kiểm tra cùng instance