true または false の 2 つの値のうち 1 つだけを持つ変数はブール型変数であり、true と false はブール直接量です。次のステートメントを使用して、state という名前のブール変数を定義できます。
ブール値の状態=true
このステートメントは、変数 state を true 値で初期化します。代入ステートメントを使用して、ブール変数に値を代入することもできます。たとえば、次のようなステートメントです。
状態=偽
変数 state の値を false に設定します。
現時点では、ブール変数に値を割り当てること以上のことはできませんが、次の章で説明するように、ブール変数はプログラム内で意思決定を行うとき、特に式を使用して結果を生成できる場合に役立ちます。ブール値の結果の場合に便利です。
ブール値を組み合わせる演算子には、ブール AND (AND)、ブール OR (oR)、ブール NOT (それぞれ &&、11、! に対応)、ブール値を生成する比較演算子などがあります。ここでそれらを抽象的に学習するのではなく、次の章に進み、それらを適用してプログラムの実行順序を変更する方法を演習で確認します。
注意する必要があるのは、ブール変数は他の基本データ型とは異なり、他の基本型に変換できないこと、および他の基本型をブール型に変換できないことです。
Java でブール オブジェクトを生成する 3 つの方法の比較
Java がブール値オブジェクトを生成する最初の一般的な方法は、new 演算子を使用することです。
ブール値 boolean1 = 新しいブール値(1==1);
2 つ目は静的メソッド valueOf を使用する方法です。
ブール値 boolean1 = Boolean.valueOf(1==1);
3 番目のタイプは、JDK1.5 以降の自動ボックス化です。
ブール値 boolean1 = 1==1;
これら 3 つの方法の違いは何ですか?
まずはコードを見てみましょう
Boolean[] boolean1 = new Boolean[100];Boolean[] boolean2 = new Boolean[100];Boolean[] boolean3 = new Boolean[100];for (int i = 0; i < 100;i++){ boolean1[i ] = Boolean.valueOf(1==1);}for (int i = 0;i < 100;i++){ boolean2[i] = new Boolean(1==1);}for (int i = 0; i < 100;i++){ boolean3[i] = 1==1;}System.out.println("valueOf: " + String.valueOf(boolean1[1] == boolean1[2]));System.out.println("新しいブール値: " + String.valueOf(boolean2[1] ==) boolean2[2]));System.out.println("自動ラップ: " + String.valueOf(boolean3[1] == boolean3[2]));
出力は次のとおりです。
valueOf: truenew ブール値: false自動ラップ: true
なぜこのようなことが起こっているのでしょうか?
その理由は、new で作成された Boolean オブジェクトは継続的に新しいインスタンス オブジェクトを作成しますが、valueOf は Boolean クラスの静的メンバー変数を返し、同一のインスタンス変数を大量に生成しないためです。自動ラッピングは valueOf と似ています。
実際、jdk ドキュメントでは、ブール クラス オブジェクトを作成するために new の代わりに valueOf を使用することも推奨しています。