たなかのJava日記

どんなことをやったか(学んだか)、どこで詰まったか(わからなかったか)、どこで工夫したかの記録です。

Day8,Java 14以降のswich文、swich式

■時間

1.5時間

 

■行ったこと

1,プロになるJava書籍p.133~142

・条件演算子

Java 14以降のswich文

Java 14以降のswich式

 

■コメント

新しい書き方だとミスが減るのと記述が簡潔で良いなと感じました。

このように技術は絶えずアップデートしていくので継続して学習が必要があると改めて感じました。

 

■その他

"コンピュータはなぜ動くのか"という書籍が本日到着しました。

基礎知識を身に着けるために購入しました。

早速、寝るまで読んでみます。

 

■課題
これまでと変わらず

・前値インクリメントと後置インクリメントの説明

・参照型について

JDKJVMの説明、位置づけ

 

-----------------

以下メモです

 

■条件演算子

var message =  a < 3 ? "low" :
                         a< 7 ? "middle" :
                                    "high"
⇒"high"

■swicht文※Java 14以降導入の書き方

package projava;

public class SwitchSample {
    public static void main(String args) {
        var a = 4;
        if (a == 1 || a == 2){
            System.out.println("one-two");
        } else if (a == 3) {
            System.out.println("three");
        } else {
            System.out.println("four");
        }
    }
}

上記はコードが冗長。
ifのところの電球アイコンをクリックorAlt + Enterでswitchに置換

package projava;

public class SwitchSample {
    public static void main(String args) {
        var a = 4;
        switch (a) {
            case 1, 2 -> System.out.println("one-two");
            case 3 -> System.out.println("three");
            default -> System.out.println("four");
        }
    }
}

■switch文の判定に指定可能な値(上記、変数aの箇所)
・整数
・文字列
enum

■default句
どのcase句にも該当する値が無い時の処理を書きます
また、全てのcase句のあとに書くルールです

■switch式※Java 14以降導入の書き方
switch文を書く時の処理として、以下2つの場合が多い。
・同じ出力先に別の値を出力しているだけ
・同じ変数に別の値を割り当てているだけ
先程の例でもすべてのcase句でSystem.out.printlnメソッドを呼び出し、
違うメッセージを出力していました。
そこで、switchを式として書くこともできます。

package projava;

public class SwitchSample {
    public static void main(String[] args) {
        var a = 4;
        System.out.println(switch (a){
            case 1,2 -> "one-two";
            case 3 -> "three";
            case 4 -> "four";
            default -> "other";
        });
    }
}

        System.out.println(switch (判定する値){
            case 該当する値 -> 値;
            case 該当する別の値 -> 値;
            case 該当するさらに別の値 -> 値;
            default -> どのcase句に該当しなかったときの値;
        });

【注意点】
判定する値が整数か文字列の場合はdefault句が必須になります。
理由は、switch式は必ず何らかの値を返さなくてはならないためです。
整数か文字列ではすべての場合についてのcase句が書けないのでdefault句が必要です。
なお、swicht「文」の場合は該当する値がなければ何もしなくてもよいため、default句は必須ではありません。