HOWTO · Java
Java 中將布林值轉為字串
本教程教你如何在 Java 中把布林值轉換為字串。
本頁內容
在 Java 中,原始型別 boolean 和包裝類別 Boolean 都表示 true 或 false。對原始型別,可使用 String.valueOf(boolean) 或靜態多載 Boolean.toString(boolean)。對非 null 的 Boolean 物件,也可以呼叫其執行個體方法 toString()。當值要放進較長的訊息時,串接和格式化也很實用。這些轉換會產生小寫文字,因此 true 會變成 "true",false 則會變成 "false"。
使用 String.valueOf(boolean) 將原始 boolean 轉換為字串
String.valueOf(boolean) 是 String 上的靜態方法,接受原始型別 boolean,並回傳其文字表示。當值本身已是原始型別時,這是直接的選擇;回傳結果可以儲存、比較,或傳給需要 String 的方法。輸入仍是 boolean,回傳值則是文字,因此若之後要用於 boolean 條件判斷,必須先轉回 boolean。
執行此範例:
public class BooleanStringExample {
public static void main(String[] args) {
boolean active = true;
String text = String.valueOf(active);
System.out.println(text);
}
}
true
這種寫法也適用於 false,並會回傳對應的小寫字串。當來源變數宣告為 boolean 時,請使用原始型別多載;需要原始型別引數時,Java 也會將非 null 的 Boolean 自動拆箱。如果包裝類別參照可能為 null,請先處理這種情況,再將它傳給需要原始型別的方法,因為對 null 進行拆箱會造成 NullPointerException。
使用 Boolean.toString() 將 Boolean 值轉換為字串
Boolean 是包裝類別,而 boolean 是原始型別。非 null 的 Boolean 物件可以呼叫執行個體方法 toString()。這個類別也提供靜態多載 Boolean.toString(boolean),可直接接受原始型別,避免只為了轉換值而建立包裝物件。範例展示這兩種寫法,方便你依現有值的型別選擇。這兩個範例的程式碼與輸出區塊都原樣保留,因此標籤 “Instance” 和 “Static” 及顯示的輸出仍是英文。
public class BooleanStringExample {
public static void main(String[] args) {
Boolean enabled = Boolean.FALSE;
String instanceText = enabled.toString();
boolean active = true;
String staticText = Boolean.toString(active);
System.out.println("Instance: " + instanceText);
System.out.println("Static: " + staticText);
}
}
Instance: false
Static: true
執行個體方法要求參照不能是 null:如果 enabled 是 null,enabled.toString() 會造成 NullPointerException。靜態多載是透過類別呼叫並接受原始型別值,因此不會解參照包裝物件。如果收到可能為 null 的 Boolean,請先決定 null 代表什麼,再呼叫執行個體方法或進行拆箱。例如,可以先檢查參照,並在它為 null 時提供預設字串。
透過串接將 boolean 或 Boolean 值轉換為字串
如果正在組合字串,Java 會在串接時將原始型別 boolean 轉成小寫文字;非 null 的 Boolean 包裝物件也會轉成對應文字。將字串放在前面可讓標籤更容易閱讀,例如 "Enabled: " + enabled。這種方式適合訊息和記錄;若只是單獨轉換,明確呼叫轉換方法會更清楚。此範例的英文標籤和輸出因程式碼及輸出區塊原樣保留而維持英文。
public class BooleanStringExample {
public static void main(String[] args) {
boolean active = true;
Boolean enabled = Boolean.FALSE;
System.out.println("Active: " + active);
System.out.println("Enabled: " + enabled);
}
}
Active: true
Enabled: false
串接 null 的 Boolean 會產生文字 "null";這不會對該參照呼叫 toString()。這與 enabled.toString() 不同,後者在參照同樣為 null 時會造成 NullPointerException。組合輸出時請留意這項差異:串接會將 null 保留為文字 null,而執行個體方法要求有實際的 Boolean 值。如果文字要提供給使用者或外部格式使用,而 null 可能造成歧義,請明確指定替代值。
使用 String.format() 將 boolean 格式化為字串
當 boolean 要放進較長的格式化訊息,或訊息包含多個值時,可以使用 String.format()。它的 %b 轉換會將 Boolean 引數格式化為小寫的 true 或 false;這適合用於易讀的範本,但只轉換一個值時會多出格式化機制。此範例將格式字串和值放在一起,讓 boolean 的位置一目了然。程式碼與輸出區塊均原樣保留,因此標籤 “Available” 和顯示的輸出仍是英文。
public class BooleanStringExample {
public static void main(String[] args) {
boolean available = true;
String message = String.format("Available: %b", available);
System.out.println(message);
}
}
Available: true
若只需要簡單轉換,請使用 String.valueOf(boolean) 或 Boolean.toString(boolean)。短標籤可用串接;當範本能讓較長訊息的結構更清楚時,則可使用 String.format()。無論採用哪種方式,都要留意來源型別:原始型別一定有 boolean 值,而 Boolean 參照可能是 null。