Java - 選擇表達式
你好,未來的Java程序設計師!今天,我們將深入探討Java 12中引入並在Java 14中增強的最激動人心的功能之一:選擇表達式。作為你友善的鄰居計算機科學老師,我將在此旅程中引導你,即使你之前從未寫過一行代碼。所以,系好安全帶,我們開始吧!
選擇表達式是什麼?
在我們跳入選擇表達式之前,讓我們快速了解一下選擇語句是什麼。想象一下,你在一個冰淇淋店,根據你的口味選擇,你會得到不同的配料。這基本上就是程序設計中的選擇語句所做的——它允許你根據不同的條件執行不同的代碼。
現在,選擇表達式採用了這個概念,並使其更加强大和簡潔。它允許我們將整個選擇區塊視為可以返回值的表達式。這就像從普通的冰淇淋甜筒升級到豪華聖代一樣!
舊方法:傳統的選擇語句
讓我們從一個傳統的選擇語句開始,看看我們以前是如何做事的:
String day = "MONDAY";
String typeOfDay;
switch (day) {
case "MONDAY":
case "TUESDAY":
case "WEDNESDAY":
case "THURSDAY":
case "FRIDAY":
typeOfDay = "Weekday";
break;
case "SATURDAY":
case "SUNDAY":
typeOfDay = "Weekend";
break;
default:
typeOfDay = "Invalid day";
}
System.out.println(typeOfDay);
在這個例子中,我們正在確定一天是工作日還是週末。注意我們需要使用break
語句來防止穿透,並且我們必須在選擇區塊外部聲明typeOfDay
。
新方法:選擇表達式
現在,讓我們看看我們如何使用選擇表達式達到同樣的結果:
String day = "MONDAY";
String typeOfDay = switch (day) {
case "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY" -> "Weekday";
case "SATURDAY", "SUNDAY" -> "Weekend";
default -> "Invalid day";
};
System.out.println(typeOfDay);
哇!看看這有多麼乾淨和簡潔。我們合並了多個案例,刪除了break
語句,並直接將結果分配給typeOfDay
。這就像整理你的房間——突然間一切都整潔有序!
使用 "case L ->" 標籤的選擇表達式
箭頭語法(->
)是選擇表達式的關鍵特性。它允許我們以簡潔的方式指定案例標籤及其相關動作。讓我們看看另一個例子:
int dayNumber = 3;
String dayName = switch (dayNumber) {
case 1 -> "Monday";
case 2 -> "Tuesday";
case 3 -> "Wednesday";
case 4 -> "Thursday";
case 5 -> "Friday";
case 6 -> "Saturday";
case 7 -> "Sunday";
default -> "Invalid day number";
};
System.out.println("Day " + dayNumber + " is " + dayName);
在這個例子中,我們正在將一個日期數字轉換為其對應的名稱。箭頭語法使每個案例成為一個簡單易讀的行。這就像一個路標直接指向正確的答案!
使用 "case L:" 語句和 yield 語句的選擇表達式
有時,你可能需要在選擇表達式中返回不止一個簡單的值。這時yield
語句就派上用場了。這就像說:"我完成計算了,這是最後的答案!"
讓我們看看一個例子:
int month = 8;
String season = switch (month) {
case 12, 1, 2:
yield "Winter";
case 3, 4, 5:
yield "Spring";
case 6, 7, 8:
yield "Summer";
case 9, 10, 11:
yield "Fall";
default: {
String message = "Invalid month: " + month;
System.out.println(message);
yield "Unknown";
}
};
System.out.println("The season for month " + month + " is " + season);
在這個例子中,我們正在根據月份確定季節。注意我們是如何使用yield
來返回值的,尤其是在default
案例中,我們進行了一些更多的處理。
高級使用:案例標籤中的表達式
選擇表達式的一個最酷的特性是你可以 在案例標籤中使用表達式。這就像給你的選擇語句一個超能力!以下是一個例子:
record Person(String name, int age) {}
Person person = new Person("Alice", 25);
String lifeStage = switch (person) {
case Person p when p.age() < 13 -> "Child";
case Person p when p.age() >= 13 && p.age() < 20 -> "Teenager";
case Person p when p.age() >= 20 && p.age() < 60 -> "Adult";
case Person p when p.age() >= 60 -> "Senior";
default -> "Unknown";
};
System.out.println(person.name() + " is a " + lifeStage);
在這個例子中,我們正在使用一個record
(Java的另一個酷炫功能)來表示一個人,然後使用具有複雜條件的選擇表達式來確定他們的生命階段。這就像在你的代碼中有一個個人生活教練一樣!
結論
選擇表達式是Java中的一個強大工具,可以讓你的代碼更易讀、更簡潔、出錯率更低。它就像從翻蓋手機升級到智能手機——突然間,你可以用更少的努力做更多的事情!
記住,編程就是實踐。所以,不要害怕實驗這些概念。嘗試創建自己的選擇表達式,玩轉不同的情景,並且最重要的是,玩得開心!
在我們結束之前,以下是我們討論過的關鍵方法的摘要:
方法 | 描述 |
---|---|
-> |
箭頭語法,用於簡潔的案例標籤和動作 |
yield |
從選擇表達式中返回值的語句 |
case L when condition |
案例標籤中的模式匹配 |
編程愉快,願你的選擇永遠表達清晰!
Credits: Image by storyset