首頁>技術>

JDK 14釋出版本正式支援switch表示式。具體包括:在switch語句中使用箭頭標號語法;case 條件,多個可以寫在一行,用逗號分開;可以省略 break 關鍵字;switch可以作為表示式直接返回一個值。具體標準參見https://openjdk.java.net/jeps/361。

例如,下面定義的方法rangeOf ( )中,switch語句中使用了箭頭標籤(Arrow Labels),case 條件中使用多個字面常量,並且省略了break語句:

static void rangeOf(int k) {  switch (k) {      case 1,2,3 -> System.out.println("Ranking one");      case 4,5,6,7,8,9 -> System.out.println("Ranking two");      default -> System.out.println("Not Ranked");    }}

連續使用如下的方法方法呼叫:

howMany(1);howMany(19);howMany(8);

會得到如下的輸出結果:

Ranking oneNot RankedRanking two

switch語句擴充套件成為switch表示式的基本語法為:

<目標型別> result = switch (<引數>) {    case Label1 -> <表示式1>;    case Label2 -> <表示式2>;    ……    default -> <表示式n>;};

如果<目標型別>確定,整個switch表示式的型別就是目標型別;如果<目標型別>不確定,那麼 switch 表示式型別就是各 case 分支的表示式計算出來的獨立型別。

大多數情況下 case 標號箭頭("case Label ->")後面是單個表示式,對於後面由多條語句構成的語句塊,可以在最後使用 yield 語句來返回 switch 表示式值。例如:

int j = switch (s) {    case "BJTU" -> 1;    case "SSE" -> 2;    default -> {        System.out.println("Neither BJTU nor SSE, hmmm...");        yield 0;    }};

yield語句也可以用於傳統的case 標號("case Label :")下,返回一個值並結束switch表示式。例如:

int result = switch (s) {    case "BJTU":   		 yield 1;    case "SSE":    		yield 2;    default:        System.out.println("Neither BJTU nor SSE, hmmm...");        yield 0;};

11
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 「python課程,精心總結」while迴圈