HOWTO · Java

Java でのブール型から文字列への変換

このチュートリアルでは、Java でブール値を文字列に変換する方法を説明します。

このページの内容

Java では、プリミティブ型の boolean とラッパークラスの Boolean は、どちらも true または false を表します。プリミティブ値には String.valueOf(boolean) または静的メソッドの Boolean.toString(boolean) を使えます。null ではない Boolean オブジェクトなら、インスタンスメソッドの toString() も使えます。値をより大きなメッセージに含める場合は、文字列連結や書式指定が便利です。いずれの変換でも小文字の文字列が返されるため、true は "true" に、false は "false" になります。

プリミティブ型 boolean を String.valueOf(boolean) で文字列に変換する

String.valueOf(boolean) は、プリミティブ型の boolean を受け取り、その文字列表現を返す String の静的メソッドです。値がすでにプリミティブ型なら直接使えます。戻り値は文字列なので、保存したり、比較したり、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 として宣言されている場合は、プリミティブ型用のオーバーロードを使います。プリミティブ型の引数が必要な場面では、null ではない Boolean も Java によってアンボックスされます。ラッパー参照が null の可能性がある場合は、プリミティブ型を受け取るメソッドに渡す前に対処してください。null のアンボックスは NullPointerException を引き起こします。

Boolean.toString() で Boolean の値を文字列に変換する

Boolean はラッパークラスで、boolean はプリミティブ型です。null ではない Boolean オブジェクトでは、インスタンスメソッドの toString() を呼び出せます。また、このクラスにはプリミティブ値を直接受け取る静的メソッド Boolean.toString(boolean) もあり、変換だけのためにラッパーを作る必要はありません。例では両方の形式を示しているため、手元の値の型に合わせて選べます。コードと出力ブロックは変更せずに保持しているため、例のラベルと表示結果は英語のままです。

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() が呼び出されるわけではありません。同じ null 参照でも、enabled.toString() は NullPointerException をスローします。出力を組み立てる際はこの違いに注意してください。連結では null が単語 null として残りますが、インスタンスメソッドには実際の Boolean 値が必要です。ユーザー向けの文章や外部形式に使う場合、null では意味が曖昧になるなら、明示的な代替値を選んでください。

String.format() で boolean を文字列として書式指定する

boolean 値をより大きな書式付きメッセージに含める場合や、メッセージに複数の値を入れる場合は String.format() を使います。%b 変換指定子は Boolean 引数を小文字の true または false として書式化します。読みやすいテンプレートを作るのに便利ですが、値を一つ変換するだけなら書式指定の仕組みが増えます。この例では書式文字列と値を並べているため、boolean の位置が分かりやすくなっています。コードと出力ブロックは変更せずに保持しているため、例のラベルと表示結果は英語のままです。

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 の可能性があります。