<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
自 Java 7 以來,java 中的 switch
語句經歷了快速發展。因此,在本文中,我們將通過範例討論 switch
語句從 java 7 到 java 17 的演變或變化。
在 Java 7 之前,switch case
中只能使用整數,這個語法持續了很長的一段時間。
int value = 5; switch (value) { case 1: System.out.println("One"); break; case 5: System.out.println("five"); break; default: System.out.println("Unknown"); }
在 Java 8 中,switch
語句中的case
部分支援字串和列舉。
字串case
例子
String day = "Tuesday"; switch (day) { case "Monday": System.out.println("Week day"); break; case "Tuesday": System.out.println("Week day"); break; case "Wednesday": System.out.println("Week day"); break; case "Thursday": System.out.println("Week day"); break; case "Friday": System.out.println("Week day"); break; case "Saturday": System.out.println("Weekend"); break; case "Sunday": System.out.println("Weekend"); break; default: System.out.println("Unknown"); }
列舉case
例子
enum DAYS { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } DAYS days = DAYS.SUNDAY; switch (days) { case MONDAY: System.out.println("Weekdays"); break; case TUESDAY: System.out.println("Weekdays"); break; case WEDNESDAY: System.out.println("Weekdays"); break; case THURSDAY: System.out.println("Weekdays"); break; case FRIDAY: System.out.println("Weekdays"); break; case SATURDAY: System.out.println("Weekends"); break; case SUNDAY: System.out.println("Weekends"); break; default: System.out.println("Unknown"); }
Java 12 中進一步增強了 switch 語句,並引入了 switch 表示式作為預覽功能。
switch
塊中返回值,因此 switch
語句成為switch
表示式case
中有多個值switch
表示式返回值break
關鍵字返回值通過 break 關鍵字返回值例子
return switch (day) { case "Monday": break "Weekday"; case "Tuesday": break "Weekday"; case "Wednesday": break "Weekday"; case "Thursday": break "Weekday"; case "Friday": break "Weekday"; case "Saturday": break "Weekend"; case "Sunday": break "Weekend"; default: break "Unknown"; };
通過箭頭運運算元返回值
return switch (day) { case "Monday"-> "Week day"; case "Tuesday"-> "Week day"; case "Wednesday"->"Week day"; case "Thursday"->"Week day"; case "Friday"->"Week day"; case "Saturday"-> "Weekend"; case "Sunday"-> "Weekend"; default->"Unknown"; };
case
中多個值的例子
同樣 Java 12 可以在單個 case
語句中提供多個 case
值,如下所示
return switch (day) { case "Monday","Tuesday","Wednesday","Thursday","Friday" -> "Week day"; case "Saturday", "Sunday" -> "Weekend"; default->"Unknown"; };
上面通過break
關鍵字返回值,在 Java 13 中被“yield
”關鍵字取代。
return switch (day) { case "Monday": yield "Weekday"; case "Tuesday": yield "Weekday"; case "Wednesday": yield "Weekday"; case "Thursday": yield "Weekday"; case "Friday": yield "Weekday"; case "Saturday": yield "Weekend"; case "Sunday": yield "Weekend"; default: yield "Unknown"; };
到目前為止,我們在 Java 12 和 13 中討論的 switch
語句和功能都是預覽功能,通過標記引數 –enable-preview=true
開啟功能 。
但是 Java 14 只是將所有功能從預覽功能變成了標準功能,無需設定標誌 –enable-preview=true
也能使用上面所說的方式。
Java 17 LTS 是 Java SE 平臺的最新長期支援版本,釋出於2021年9月15日,又增強了switch
的功能。
您可以在 switch 條件下傳遞物件,並且可以在 switch case
標籤中檢查該物件的不同型別,如下面的例子:
return switch (obj) { case Integer i -> "It is an integer"; case String s -> "It is a string"; case Employee s -> "It is a Employee"; default -> "It is none of the known data types"; };
在上面的範例中,我將一個物件傳遞給切換條件,這在 Java 17 之前是不可能的。然後可以檢查該物件的特定資料型別並將其分配給變數。
例如case Integer i- > "It is an integer";
表示檢查傳遞的物件是否為“Integer”型別,如果它是整數,則將其分配給變數“i”。並通過箭頭運運算元返回字串“It is an integer
”。
讓我們來看看這個用例。
在我檢查了“Employee
”範例的案例標籤內,我想進行額外的檢查。
通常你會像下面這麼做:
case Employee emp: if(emp.getDept().equals("IT")) { yield "This is IT Employee"; }
但是 Java 17 引入了“保護模式”, 你可以修改成下面的方式:
return switch (obj) { case Integer i -> "It is an integer"; case String s -> "It is a string"; case Employee employee && employee.getDept().equals("IT") -> "IT Employee"; default -> "It is none of the known data types"; };
在 Java 17 之前,您永遠無法將 null 值傳遞給 switch 語句,而不會丟擲 Null 指標異常,Java 17 允許你這樣處理,比如下面的方式:
case null -> "It is a null object";
如果你有上面的 switch 表示式,如果你傳遞的物件是空的,你將永遠不會得到空指標異常。
上面就是從 Java 7 到 Java 17 switch case
的進化史,雖然沒大用,大家就瞭解瞭解吧。
以上就是Java7到Java17之Switch語句進化史範例詳解的詳細內容,更多關於Java7到Java17Switch語句的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45