欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java7到Java17之Switch語句進(jìn)化史示例詳解

 更新時(shí)間:2023年01月17日 14:58:07   作者:JAVA旭陽  
這篇文章主要為大家介紹了Java7到Java17之Switch語句進(jìn)化史示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

自 Java 7 以來,java 中的 switch 語句經(jīng)歷了快速發(fā)展。因此,在本文中,我們將通過示例討論 switch 語句從 java 7 到 java 17 的演變或變化。

Java 7

在 Java 7 之前,switch case 中只能使用整數(shù),這個(gè)語法持續(xù)了很長的一段時(shí)間。

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

在 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

Java 12 中進(jìn)一步增強(qiáng)了 switch 語句,并引入了 switch 表達(dá)式作為預(yù)覽功能。

  • 您可以從 switch 塊中返回值,因此 switch 語句成為switch 表達(dá)式
  • 您可以在一個(gè)case中有多個(gè)值
  • 您可以通過箭頭運(yùn)算符從 switch 表達(dá)式返回值
  • 通過 break 關(guān)鍵字返回值

通過 break 關(guān)鍵字返回值例子

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";
};

通過箭頭運(yùn)算符返回值

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中多個(gè)值的例子

同樣 Java 12 可以在單個(gè) case 語句中提供多個(gè) case 值,如下所示

return  switch (day) {
            case "Monday","Tuesday","Wednesday","Thursday","Friday"
-> "Week day";
            case "Saturday", "Sunday" -> "Weekend";
            default->"Unknown";
        };

Java 13

上面通過break關(guān)鍵字返回值,在 Java 13 中被“yield”關(guān)鍵字取代。

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 14

到目前為止,我們在 Java 12 和 13 中討論的 switch 語句和功能都是預(yù)覽功能,通過標(biāo)記參數(shù) –enable-preview=true 開啟功能 。

但是 Java 14 只是將所有功能從預(yù)覽功能變成了標(biāo)準(zhǔn)功能,無需設(shè)置標(biāo)志 –enable-preview=true也能使用上面所說的方式。

Java 17

Java 17 LTS 是 Java SE 平臺的最新長期支持版本,發(fā)布于2021年9月15日,又增強(qiáng)了switch的功能。

  • 模式匹配

您可以在 switch 條件下傳遞對象,并且可以在 switch case 標(biāo)簽中檢查該對象的不同類型,如下面的例子:

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";
};

在上面的示例中,我將一個(gè)對象傳遞給切換條件,這在 Java 17 之前是不可能的。然后可以檢查該對象的特定數(shù)據(jù)類型并將其分配給變量。

例如case Integer i- > "It is an integer";表示檢查傳遞的對象是否為“Integer”類型,如果它是整數(shù),則將其分配給變量“i”。并通過箭頭運(yùn)算符返回字符串“It is an integer”。

  • 保護(hù)模式

讓我們來看看這個(gè)用例。

在我檢查了“Employee”實(shí)例的案例標(biāo)簽內(nèi),我想進(jìn)行額外的檢查。

通常你會像下面這么做:

case Employee emp:
	if(emp.getDept().equals("IT")) {
		yield "This is IT Employee";
	}

但是 Java 17 引入了“保護(hù)模式”, 你可以修改成下面的方式:

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 之前,您永遠(yuǎn)無法將 null 值傳遞給 switch 語句,而不會拋出 Null 指針異常,Java 17 允許你這樣處理,比如下面的方式:

case null -> "It is a null object";

如果你有上面的 switch 表達(dá)式,如果你傳遞的對象是空的,你將永遠(yuǎn)不會得到空指針異常。

總結(jié)

上面就是從 Java 7 到 Java 17 switch case 的進(jìn)化史,雖然沒大用,大家就了解了解吧。

以上就是Java7到Java17之Switch語句進(jìn)化史示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Java7到Java17Switch語句的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 深度分析java dump文件

    深度分析java dump文件

    java內(nèi)存dump是jvm運(yùn)行時(shí)內(nèi)存的一份快照,利用它可以分析是否存在內(nèi)存浪費(fèi),可以檢查內(nèi)存管理是否合理,當(dāng)發(fā)生OOM的時(shí)候,可以找出問題的原因。那么dump文件的內(nèi)容是什么樣的呢?
    2021-05-05
  • IntelliJ?IDEA如何集成maven

    IntelliJ?IDEA如何集成maven

    這篇文章主要介紹了IntelliJ?IDEA如何集成maven問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 對Mapper 中幾種update的區(qū)別說明

    對Mapper 中幾種update的區(qū)別說明

    這篇文章主要介紹了對Mapper 中幾種update的區(qū)別說明,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Java多線程下的單例模式參考

    Java多線程下的單例模式參考

    這篇文章主要演示多線程下的單例模式,分別演示了lock和synchronized兩種方案,希望能給大家做一個(gè)參考。
    2016-06-06
  • 基于Javamail實(shí)現(xiàn)發(fā)送郵件(QQ/網(wǎng)易郵件服務(wù)器)

    基于Javamail實(shí)現(xiàn)發(fā)送郵件(QQ/網(wǎng)易郵件服務(wù)器)

    這篇文章主要介紹了基于Javamail實(shí)現(xiàn)發(fā)送郵件,分別使用QQ郵箱作為smtp郵件服務(wù)器發(fā)送郵件,使用網(wǎng)易郵箱作為smtp郵件服務(wù)器發(fā)送郵件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • JavaWeb中Servlet的生命周期及線程安全問題詳解

    JavaWeb中Servlet的生命周期及線程安全問題詳解

    這篇文章主要介紹了JavaWeb中Servlet的生命周期及線程安全問題詳解,Servlet?生命周期可被定義為從創(chuàng)建直到毀滅的整個(gè)過程,Servlet體系結(jié)構(gòu)是建立在Java多線程機(jī)制之上的,它的生命周期是由Web容器負(fù)責(zé)的,需要的朋友可以參考下
    2024-01-01
  • 淺談在Java中JSON的多種使用方式

    淺談在Java中JSON的多種使用方式

    這篇文章主要介紹了淺談在Java中JSON的多種使用方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 詳解SpringCloud Finchley Gateway 統(tǒng)一異常處理

    詳解SpringCloud Finchley Gateway 統(tǒng)一異常處理

    這篇文章主要介紹了詳解SpringCloud Finchley Gateway 統(tǒng)一異常處理,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-10-10
  • java中類之間的數(shù)據(jù)傳遞方式

    java中類之間的數(shù)據(jù)傳遞方式

    這篇文章主要介紹了java中類之間的數(shù)據(jù)傳遞方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 解讀spark添加二方包導(dǎo)致依賴沖突排查問題

    解讀spark添加二方包導(dǎo)致依賴沖突排查問題

    這篇文章主要介紹了spark添加二方包導(dǎo)致依賴沖突排查問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06

最新評論