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

Toán tử logic trên String trong Java

Java không hỗ trợ toán tử logic trực tiếp trên String (như &&, ||, !). Code ví dụ gốc thực chất áp dụng toán tử logic trên kiểu int. Dưới đây là cách xử lý logic liên quan đến String đúng cách.

1. So sánh String (Equality)

  • equals(): So sánh nội dung (content equality).
  • equalsIgnoreCase(): Bỏ qua chữ hoa/thường.
  • ==: So sánh reference (địa chỉ bộ nhớ) – KHÔNG dùng cho so sánh nội dung.
String a = "Hello";
String b = new String("Hello");
System.out.println(a == b);           // false (khác object)
System.out.println(a.equals(b));      // true (cùng nội dung)

2. Kiểm tra điều kiện trên String

String str = "Java Programming";

if (str != null && !str.isEmpty()) {          // Kiểm tra null/rỗng
    if (str.startsWith("Java")) { ... }       // Bắt đầu bằng
    if (str.endsWith("ing")) { ... }          // Kết thúc bằng
    if (str.contains("Pro")) { ... }          // Chứa substring
    if (str.matches("Java.*")) { ... }        // Regex match
}

3. Logic boolean kết hợp nhiều điều kiện String

String username = "admin";
String password = "secret123";

boolean valid = (username != null && username.equals("admin"))
             && (password != null && password.length() >= 8);

if (valid) {
    System.out.println("Đăng nhập hợp lệ");
} else {
    System.out.println("Sai thông tin");
}

4. Pattern Matching (Java 16+ / 21)

// instanceof pattern matching
if (obj instanceof String s && s.length() > 5) {
    System.out.println("String dài: " + s);
}

// Switch expression (Java 14+)
String role = switch (userType) {
    case "ADMIN", "SUPER_ADMIN" -> "admin";
    case "USER", "GUEST" -> "user";
    default -> "unknown";
};

5. Ví dụ gốc được viết lại đúng ngữ cảnh

Code gốc demo logic trên int, không phải String:

public class LogicOperatorsDemo {
    public static void main(String[] args) {
        int a = 45, b = 32, c = 87, d = 1;
        
        System.out.println("a = " + a);
        System.out.println("b = " + b);
        System.out.println("c = " + c);
        
        // Toán tử logic trên int
        if ((a > b) && (b == c)) {
            d = a + b + c;
            System.out.println("Sum = " + d);
        } else {
            System.out.println("Điều kiện không thỏa mãn"); // In ra dòng này
        }
    }
}

Kết quả

a = 45
b = 32
c = 87
Điều kiện không thỏa mãn

Tóm tắt

  • String không có operator &&, ||, !.
  • Dùng methods: equals, contains, startsWith, endsWith, matches, isEmpty.
  • Kết hợp điều kiện bằng &&, || trên kết quả boolean của các method trên.
  • Luôn check null trước khi gọi method trên String.