最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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ù)了很長(zhǎng)的一段時(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

到目前為止,我們?cè)?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 平臺(tái)的最新長(zhǎng)期支持版本,發(fā)布于2021年9月15日,又增強(qiáng)了switch的功能。

  • 模式匹配

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

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è)對(duì)象傳遞給切換條件,這在 Java 17 之前是不可能的。然后可以檢查該對(duì)象的特定數(shù)據(jù)類型并將其分配給變量。

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

  • 保護(hù)模式

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

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

通常你會(huì)像下面這么做:

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 語句,而不會(huì)拋出 Null 指針異常,Java 17 允許你這樣處理,比如下面的方式:

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

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

總結(jié)

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

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

相關(guān)文章

  • 使用Java把文本內(nèi)容轉(zhuǎn)換成網(wǎng)頁的實(shí)現(xiàn)方法分享

    使用Java把文本內(nèi)容轉(zhuǎn)換成網(wǎng)頁的實(shí)現(xiàn)方法分享

    這篇文章主要介紹了使用Java把文本內(nèi)容轉(zhuǎn)換成網(wǎng)頁的實(shí)現(xiàn)方法分享,利用到了Java中的文件io包,需要的朋友可以參考下
    2015-11-11
  • 淺談JDK、JRE、JVM三者之間的關(guān)系

    淺談JDK、JRE、JVM三者之間的關(guān)系

    本文主要介紹了淺談JDK、JRE、JVM三者之間的關(guān)系,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • java使用FuncGPT慧函數(shù)對(duì)Mybatis進(jìn)行一對(duì)一查詢映射處理

    java使用FuncGPT慧函數(shù)對(duì)Mybatis進(jìn)行一對(duì)一查詢映射處理

    這篇文章主要介紹了java使用FuncGPT慧函數(shù)對(duì)Mybatis進(jìn)行一對(duì)一查詢映射處理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • SpringBoot整合jasypt加密配置文件敏感信息

    SpringBoot整合jasypt加密配置文件敏感信息

    在項(xiàng)目中我們需要對(duì)配置文件的一些敏感信息進(jìn)行加密處理,比如數(shù)據(jù)庫賬戶密碼,避免直接暴露出來,這種場(chǎng)景常常用于生產(chǎn)環(huán)境,我們不想讓開發(fā)人員知道生產(chǎn)庫的密碼,有運(yùn)維人員統(tǒng)一管理,所以本文給大家介紹了SpringBoot整合jasypt加密配置文件敏感信息
    2024-06-06
  • IDEA 顯示Run Dashboard窗口的2種方式(推薦)

    IDEA 顯示Run Dashboard窗口的2種方式(推薦)

    這篇文章主要介紹了IDEA 顯示Run Dashboard窗口的2種方式,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Java實(shí)現(xiàn)的Base64加密算法示例

    Java實(shí)現(xiàn)的Base64加密算法示例

    這篇文章主要介紹了Java實(shí)現(xiàn)的Base64加密算法,結(jié)合實(shí)例形式分析了Java實(shí)現(xiàn)的base64編碼轉(zhuǎn)換相關(guān)使用方法及操作注意事項(xiàng),需要的朋友可以參考下
    2018-04-04
  • Java實(shí)現(xiàn)插入排序算法可視化的示例代碼

    Java實(shí)現(xiàn)插入排序算法可視化的示例代碼

    插入排序的算法描述是一種簡(jiǎn)單直觀的排序算法。其原理是通過構(gòu)建有序序列,對(duì)于未排序數(shù)據(jù),在已排序序列中從后向前掃描,找到相應(yīng)位置并插入。本文將用Java語言實(shí)現(xiàn)插入排序算法并進(jìn)行可視化,感興趣的可以了解一下
    2022-08-08
  • SpringCloud中的路由網(wǎng)關(guān)鑒權(quán)熔斷詳解

    SpringCloud中的路由網(wǎng)關(guān)鑒權(quán)熔斷詳解

    這篇文章主要介紹了SpringCloud中的路由網(wǎng)關(guān)鑒權(quán)熔斷詳解,Hystrix是一個(gè)用于處理分布式系統(tǒng)的延遲和容錯(cuò)的開源庫,在分布式系統(tǒng)里,許多依賴不可避免的會(huì)調(diào)用失敗,比如超時(shí)、異常等,需要的朋友可以參考下
    2024-01-01
  • MyBatis核心源碼深度剖析SQL語句執(zhí)行過程

    MyBatis核心源碼深度剖析SQL語句執(zhí)行過程

    這篇文章主要介紹了MyBatis核心源碼深度剖析SQL執(zhí)行過程,mybatis執(zhí)行SQL的流程都是根據(jù)statement字符串從configuration中獲取對(duì)應(yīng)的mappedStatement,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2022-05-05
  • 一文帶你搞懂Java中i++ 和 ++i的區(qū)別

    一文帶你搞懂Java中i++ 和 ++i的區(qū)別

    在Java中,i++和++i都用于遞增變量i的值,但它們之間有一個(gè)細(xì)微的區(qū)別,i++是后綴遞增操作符,++i是前綴遞增操作符,在大多數(shù)情況下,這兩種遞增操作的結(jié)果都是一樣的,但在某些特定的表達(dá)式和邏輯中,它們可能會(huì)產(chǎn)生不同的效果,本文將帶大家搞清Java中i++ 和 ++i的區(qū)別
    2023-09-09

最新評(píng)論

鄯善县| 蛟河市| 施秉县| 中方县| 全州县| 赤城县| 兴安县| 盐山县| 都兰县| 北海市| 承德县| 德庆县| 临洮县| 武城县| 洪雅县| 台东市| 固安县| 凯里市| 六枝特区| 黑龙江省| 忻州市| 自治县| 冀州市| 日土县| 张掖市| 淅川县| 密山市| 垦利县| 亳州市| 岢岚县| 八宿县| 吉木萨尔县| 赤城县| 宝鸡市| 洪湖市| 江安县| 屯门区| 莲花县| 常德市| 乌拉特前旗| 乐亭县|