Java 12 switch表达式新特性(->,yield)
生活随笔
收集整理的這篇文章主要介紹了
Java 12 switch表达式新特性(->,yield)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
switch表達式
使用switch時,如果遺漏了break,就會造成嚴重的邏輯錯誤,而且不易在源代碼中發現錯誤。從Java 12開始,switch語句升級為更簡潔的表達式語法,使用類似模式匹配(Pattern Matching)的方法,保證只有一種路徑會被執行,并且不需要break語句:
public class Main {public static void main(String[] args) {String fruit = "apple";switch (fruit) {case "apple" -> System.out.println("Selected apple");case "pear" -> System.out.println("Selected pear");case "mango" -> {System.out.println("Selected mango");System.out.println("Good choice!");}default -> System.out.println("No fruit selected");}} }注意新語法使用->,如果有多條語句,需要用{}括起來。不要寫break語句,因為新語法只會執行匹配的語句,沒有穿透效應。
很多時候,我們還可能用switch語句給某個變量賦值。例如:
int opt; switch (fruit) { case "apple":opt = 1;break; case "pear": case "mango":opt = 2;break; default:opt = 0;break; }使用新的switch語法,不但不需要break,還可以直接返回值。把上面的代碼改寫如下:
public class Main {public static void main(String[] args) {String fruit = "apple";int opt = switch (fruit) {case "apple" -> 1;case "pear", "mango" -> 2;default -> 0;}; // 注意賦值語句要以;結束System.out.println("opt = " + opt);} }這樣可以獲得更簡潔的代碼。
yield
大多數時候,在switch表達式內部,我們會返回簡單的值。
但是,如果需要復雜的語句,我們也可以寫很多語句,放到{…}里,然后,用yield返回一個值作為switch語句的返回值:
public class Main {public static void main(String[] args) {String fruit = "orange";int opt = switch (fruit) {case "apple" -> 1;case "pear", "mango" -> 2;default -> {int code = fruit.hashCode();yield code; // switch語句返回值}};System.out.println("opt = " + opt);} } 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Java 12 switch表达式新特性(->,yield)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 16岁的男孩体重220斤要怎样减肥才有效
- 下一篇: java美元兑换,(Java实现) 美元