常見字符串值:"true"、"false"、"TRUE"、"False"、"1"、"0"。Java 標準庫僅識別**忽略大小寫的 "true"**,其餘均視為 false。
public class StringToBooleanDemo {
public static void main(String[] args) {
String s = "true";
// 1. Boolean.valueOf(String) → Boolean 對象 → booleanValue() 拆箱
boolean b1 = Boolean.valueOf(s).booleanValue(); // true
// 等價於 Boolean.valueOf(s) 自動拆箱
// 2. 直接調用 Boolean.parseBoolean(String) → 基本類型 boolean(推薦,無對象創建)
boolean b2 = Boolean.parseBoolean(s); // true
// 3. 構造器 new Boolean(String) → Boolean 對象 → booleanValue()(JDK 9 棄用,不推薦)
Boolean bb = new Boolean(s);
boolean b3 = bb.booleanValue(); // true
// 4. 字符串比較手動轉換(可控邏輯,如識別 "1"/"yes")
boolean b4 = "true".equalsIgnoreCase(s) || "1".equals(s) || "yes".equalsIgnoreCase(s);
System.out.println(b1 + " " + b2 + " " + b3 + " " + b4);
}
}
| 方法 | 返回類型 | 創建對象 | 大小寫敏感 | 性能 | 推薦度 |
|---|---|---|---|---|---|
Boolean.valueOf(s) | Boolean | 可能(緩存 TRUE/FALSE 兩個單例) | 忽略大小寫 | 極快 | ⭐⭐⭐ 需對象時 |
Boolean.parseBoolean(s) | boolean | 無 | 忽略大小寫 | 最快 | ⭐⭐⭐⭐⭐ 僅需基本類型 |
new Boolean(s) | Boolean | 每次新建 | 忽略大小寫 | 慢 | ❌ 棄用 |
| 手動比較 | boolean | 無 | 自定義 | 快 | ⭐⭐ 業務擴展時 |
System.out.println(Boolean.parseBoolean("true")); // true
System.out.println(Boolean.parseBoolean("TRUE")); // true
System.out.println(Boolean.parseBoolean("false")); // false
System.out.println(Boolean.parseBoolean("FALSE")); // false
System.out.println(Boolean.parseBoolean("1")); // false ⚠️
System.out.println(Boolean.parseBoolean("yes")); // false ⚠️
System.out.println(Boolean.parseBoolean(null)); // false (不拋 NPE)
System.out.println(Boolean.parseBoolean("")); // false
注意:Boolean.valueOf(null) 返回 Boolean.FALSE,new Boolean(null) 創建對象 value=false,均不拋異常。
Boolean.parseBoolean(str),零對象分配、語義清晰。Boolean.valueOf(str),復用單例 Boolean.TRUE/FALSE。BooleanUtils.toBoolean(String)(Apache Commons Lang)或自寫正則/集合匹配。new Boolean():JDK 9 標記 @Deprecated(forRemoval=true),未來版本將移除。