「もし●●の場合は■の処理を実行する」といったプログラムを表現するためには、真偽値と条件分岐の理解が必要です。

プログラミングで条件分岐を使わないことはほぼ無いので、とても重要な箇所となります。

ここでは Java で条件分岐を表現するための構文と、真偽値について学習します。

Boolean(真偽値)

Boolean(ブーリアン)型とも呼ばれ、値は true(真)か false(偽)の 二つしかありません。

「できる」か「できない」、「するべき」か「してはいけない」、「実行済み」か「実行していない」など、フラグ(flag)を立てる時に使用されます。

値は Boolean型を表す boolean を 用いて宣言します。

Booleanの例


boolean isApple = true;
boolean canFly = false;
System.out.println(isApple); // true
System.out.println(canFly); // false
                

比較演算子

比較演算子( >=、<=、<、>、==、!=)を使用して二つの値を比較することができます。

比較を行った結果は Boolean型 で返却されます。

演算子 使い方 意味
>= x >= y x が y 以上なら true
<= x <= y x が y 以下なら true
< x < y x が y 未満なら true
> x > y x が y より大きいなら true
== x == y x と y が同等なら true
!= x != y x と y が同等ではないなら true

比較演算子の例


int x = 10, y = 9;
System.out.println(x >= x); // xはy以上のため true
System.out.println(x <= y); // xはy以下ではないため false
System.out.println(x < x); // xはx未満ではないため false
System.out.println(x > y); // xはyより大きいため true
System.out.println(x == y); // xとyは同等ではないため false
System.out.println(x != y); // xとyは同等ではないため true
                

以下のように変数に代入して使用することもできます。


boolean isMatch = 10 == 10;
boolean isBig = 10 < 8;
System.out.println(isMatch); // true
System.out.println(isBig); // false
                

論理演算子について

論理演算子を使うことで「10 < 8 または 10 == 10なら真」のように複数の条件から一つの真偽値を得ることができます。

演算子 使い方 意味
&& x && y x と y 両方が true であれば true
|| x || y x と y どちらかが true であれば true
! !x x の反対(true であれば false)

論理演算子の例


int x = 10, y = 9;
System.out.println(x >= x && x <= y); // 右辺が false のため false
System.out.println(x < x || x > y); // 右辺が true のため true 
System.out.println(!false); // false の反対 のため true
System.out.println(x < y || (x >= y && x != 8)); // 右辺のカッコ内が true のため true
    

一番下の例のように、丸括弧(())で囲むことで、複数の条件から一つの評価を得ることができます。

ショートサーキット評価

論理演算子は左から右に評価されます。

例えば、true || false である場合、左辺で既に結果が確定しているため右辺の評価を省略します。

if文で条件分岐させる方法

条件分岐(if文)

もし条件が 真(true) なら「真のときの処理」、偽(false) なら「偽のときの処理」のような分岐処理を実装することができます。

if文の構文

JavaScript ifの構文

条件が「真」の場合にのみ処理を行う書き方は次のようになります。

if( 条件式 ) {
    条件式が真だった場合の処理
}
    

else {} を記述すれば「偽」の場合の処理を実装することができます。

if( 条件式 ) {
    条件式が真だった場合の処理
} else {
    条件式が偽だった場合の処理
}
    

条件が「偽」の場合のときに更に条件を指定したい場合は else if (条件){} を用いることができます。

if( 条件式1 ) {
    条件式1が真だった場合の処理
} else if ( 条件式2 ) {
    条件式1が偽で条件式2が真だった場合の処理
} else {
    いずれも偽だった場合の処理
}
    

if文の例

「条件」には Boolean型 が返されるものを設定する必要があります。


int x = 10, y = 9;
if (true) {
    System.out.println(true); // 実行
}

if(x == y) {
    System.out.println("xとyは同等です");
} else {
    System.out.println("xとyは異なります"); // 実行
}

if(x < 10 || x > 20) {
    System.out.println("xは10未満またはxは20より大きいです");
} else if (x < 11) {
    System.out.println("xは11未満です"); // 実行
} else {
    System.out.println("xは11以上20以下です");
}
                

if文のネスト(入れ子)

if文の中に if文を記述することを ネスト といいます。

ネストしすぎると可読性が損なわれるため、ネストの深さは最大でも 2 〜 3 程度を目安にしましょう


int x = 10, y = 9;
if(x < 20) {
    if(x > y) {
        System.out.println("xは20より小さくyより大きい"); // 実行
    }
}
                

三項演算子

三項演算子は、条件によって実行する処理を分けることができます。

if文と異なるのは、簡易的(一行)に条件と式を記述できる点です。

条件式 ? 真の式 : 偽の式;
                

三項演算子の例

xy より大きければx を、そうでなければyzに代入する使用例です。


int x = 10, y = 9;
int z = x > y ? x : y;
System.out.println(z); // 10
                

以下のようにメソッド を式に設定することもできます。


int z = x > y ? test() : y;
                

もし null が値として代入されていた場合に、空文字を代入したい場合は以下のように記述します。


String demo = null;
demo = demo == null ? "" : demo;
System.out.println(demo); // ""
                

switch文で条件分岐させる方法

条件分岐(switch文)

switch文は、予め決められた値と一致した場合に、その値に設定されている処理を実行するためのものになります。

switch文の構文

switchの構文
switch ( 式 ) {
    case 値1 :
        式 が 値1 と同等なときの処理
        break;
    case 値2 :
        式 が 値2 と同等なときの処理
        break;
    case 値3 :
        式 が 値3 と同等なときの処理
        break;
    default:
        どの case にも該当しないときの処理
}
                

switch文の使用例

switch文の式には String または int、enum の何れかが返る式を設定できます。

例えば、この式に String型 の式を設定した場合は、case には String型の値を設定しなければなりません。


String animal = "猫";
switch(animal) {
    case "猫":
        System.out.println("にゃー"); // 実行
        break;
    case "犬":
        System.out.println("わん");
        break;
    case "カラス":
        System.out.println("カァー");
        break;
}
                

default句

caseの値には default を一つだけ設定できます。

この default句 は case の値に該当しなかった場合に実行されます。


String animal = "ひつじ";
switch (animal) {
    case "猫":
        System.out.println("にゃー"); // 実行
        break;
    case "犬":
        System.out.println("わん");
        break;
    case "カラス":
        System.out.println("カァー");
        break;
    default:
        System.out.println(animal + "の鳴き声"); // ひつじの鳴き声
}
                

break句

break 句は処理を抜ける際に使用します。

switch文では、caseの最後にbreak句を使用し、処理を抜けます。もし、break の記述がなければ下の case も順次実行されます。


String animal = "犬";
switch (animal) {
    case "猫":
        System.out.println("にゃー");
    case "犬":
        System.out.println("わん"); // 実行
    case "カラス":
        System.out.println("カァー"); // 実行
}
                

課題

int age = 24;

変数 age が20歳以上なら 成人、それ以外なら 未成年 と出力するプログラムを作成してください。

int x = 1, y = 4;
boolean isBig = false;

変数x足す10がyより大きければ 変数 isBigtrue を 低ければ false を代入するプログラムを作成してください。

式に 0 が設定されると、明治
1なら大正
2なら昭和
3なら平成
4なら令和

を出力するswitch文を作成してください。

カテゴリー: Javaバックエンド