首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 字符串 "true" 轉 Boolean 真值的四種姿勢:valueOf、parseBoolean、構造器與自動拆箱

     編輯:Java 綜合教學

場景:配置文件、HTTP 參數、數據庫字段讀出的字符串需轉為 boolean

常見字符串值:"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,均不拋異常。

最佳實踐建議

  1. 僅需基本類型:直接用 Boolean.parseBoolean(str),零對象分配、語義清晰。
  2. 需 Boolean 對象:用 Boolean.valueOf(str),復用單例 Boolean.TRUE/FALSE。
  3. 業務擴展識別 "1"/"yes"/"on":封裝工具方法 BooleanUtils.toBoolean(String)(Apache Commons Lang)或自寫正則/集合匹配。
  4. 避免 new Boolean():JDK 9 標記 @Deprecated(forRemoval=true),未來版本將移除。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved