Java có Boolean.parseBoolean() và Boolean.valueOf() nhưng chúng không validate – trả về false cho bất kỳ chuỗi nào khác "true" (bỏ qua hoa/thường).
Hành vi của parseBoolean/valueOf
Boolean.parseBoolean("true") // true
Boolean.parseBoolean("false") // false
Boolean.parseBoolean("TRUE") // true
Boolean.parseBoolean("yes") // false ⚠️ không ném exception
Boolean.parseBoolean("") // false
Boolean.parseBoolean(null) // false
Cách validate đúng: So sánh chính xác "true" hoặc "false"
Cách 1: equalsIgnoreCase (đơn giản)
public static boolean isBooleanString(String str) {
return str != null && (str.equalsIgnoreCase("true") || str.equalsIgnoreCase("false"));
}
Cách 2: Regular Expression
import java.util.regex.*;
public static boolean isBooleanStringRegex(String str) {
return str != null && Pattern.matches("(?i)^(true|false)$", str);
// (?i) = CASE_INSENSITIVE, ^$ = khớp toàn chuỗi
}
Ví dụ tương tác
import java.util.Scanner;
public class BooleanValidator {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Nhập chuỗi: ");
String input = sc.nextLine().trim();
if (isBooleanString(input)) {
System.out.println("✅ Là boolean type: " + Boolean.parseBoolean(input));
} else {
System.out.println("❌ KHÔNG phải boolean type");
}
}
static boolean isBooleanString(String s) {
return s != null && (s.equalsIgnoreCase("true") || s.equalsIgnoreCase("false"));
}
}
Kết quả
Nhập chuỗi: true
✅ Là boolean type: true
Nhập chuỗi: FALSE
✅ Là boolean type: false
Nhập chuỗi: hello
❌ KHÔNG phải boolean type
Tóm tắt: parseBoolean dùng để chuyển đổi, không dùng để validate. Validate bằng so sánh chuỗi hoặc regex.