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
nulltrước khi gọi method trên String.