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

java中switch條件語句的三種語法、用法及支持的參數(shù)類型

 更新時間:2024年06月06日 09:27:53   作者:五月天的尾巴  
Java中的switch語句是一種多分支選擇結(jié)構(gòu),可以一個變量的值改變程序的控制流,這篇文章主要給大家介紹了關(guān)于java中switch條件語句的三種語法、用法及支持的參數(shù)類型的相關(guān)資料,需要的朋友可以參考下

一、switch的應(yīng)用場景

在分支結(jié)構(gòu)中,我們除了使用if-else或者是if-else if之外,當(dāng)分支量過大的時候,我們即可選擇使用switch語句進行選擇

二、switch三種語法

Java中switch的三種用法詳解:

  • switch 標(biāo)準(zhǔn)方式
  • switch - > 用法
  • switch yield 用法

2.1、switch 標(biāo)準(zhǔn)方式

語法:

switch (表達式) {
	case 值1:
		// 執(zhí)行語句塊1
		break;
	case 值2:
		// 執(zhí)行語句塊2
		break;
	...
	case 值N:
		// 執(zhí)行語句塊N
		break;
	default:
		// 如果以上所有case都不匹配,執(zhí)行默認語句塊
}

case語句中指定的每個值必須具有與表達式兼容的類型。switch語句的執(zhí)行順序是,首先計算表達式的值,然后將該值與每個case的值進行比較,如果找到匹配的case,則執(zhí)行該case下的語句,直到遇到break語句或switch語句結(jié)束。如果沒有找到匹配的case,且存在default子句,則執(zhí)行default子句中的語句。如果沒有匹配的case且沒有default子句,程序?qū)⒉粓?zhí)行任何操作。

注意:若表達式的值與case后面的值匹配則會執(zhí)行該case下的語句,但是若該case下沒有break,則會一直往下執(zhí)行,直到遇到break語句或switch語句結(jié)束

注意

1.表達式支持的參數(shù)類型:JDK1.0-1.4 數(shù)據(jù)類型接受 byte、short、int、char

JDK1.5 數(shù)據(jù)類型接受 byte、short、int、char、enum(枚舉)、(包裝類型Character、Byte、Short、Integer)

JDK1.7 數(shù)據(jù)類型接受 byte、short、int、char、enum(枚舉)、包裝類型、String 六種類型

(1)對四個包裝類的支持是因為java編譯器在底層手動進行拆箱。
(2)而對枚舉類的支持是因為枚舉類有一個ordinal方法,該方法實際上是一個int類型的數(shù)值。
(3)jdk1.7開始支持String類型,但實際上String類型有一個hashCode算法,結(jié)果也是int類型。
(4)而byte short char類型可以在不損失精度的情況下向上轉(zhuǎn)型成int類型.所以總的來說,可以認為switch中只支持int類型。

float、double都不能用于switch語句。

2.default 子句是可選的,當(dāng)沒有匹配的 case 時,執(zhí)行default3.break語句用來在執(zhí)行完一個 case 分支后使程序跳出 switch 語句塊;如果沒有寫 break,程序會順序執(zhí)行到 switch 結(jié)尾,除非遇到break。

2.2、switch - > 用法

jdk12開始switch語法支持函數(shù)式接口和lambda表達式

使用switch標(biāo)準(zhǔn)方式編寫代碼太多的break造成代碼冗余可讀性不高 可以借助函數(shù)式接口和lambda表達式簡化書寫

代碼如下:

switch (表達式) {
	case 值1 -> 執(zhí)行語句塊1;
	case 值2 -> 執(zhí)行語句塊2;
	......
	case 值N -> 執(zhí)行語句塊N;	
	default:
		// 如果以上所有case都不匹配,執(zhí)行默認語句塊
}

使用 - > 方法更加簡單, ->的用法其實只是相當(dāng)于不用輸入break就可以跳出判斷, 保證其只有一條分支可走.

示例:

int dayOfWeek = 2;
switch (dayOfWeek) {
    case 1 -> System.out.println("星期一");
    case 2 -> System.out.println("星期二");
    case 3 -> System.out.println("星期三");
    case 4 -> System.out.println("星期四");
    case 5 -> System.out.println("星期五");
    case 6 -> System.out.println("星期六");
    default -> System.out.println("星期日");
}

輸出結(jié)果為:

星期二

jdk12之后還可以多條件合并

int dayOfWeek = 2;
switch (dayOfWeek) {
    case 1,2,3,4,5 -> System.out.println("工作日");
    default -> System.out.println("其他");
}

2.2、switch yield 用法

jdk14新特性,增加了yield用法

int numLetters = switch(seasonName){
	case "Spring" ->{
		System.out.println("spring time");
		yield 6;
		}
	case "Summer","Winter" -> 6; //可以使用yield關(guān)鍵字,也可以省略
	case "Fall" -> 4;
	default -> -1;
};

這里來說, switch 作為了 一條語句, 所以末尾要加冒號, 其他用法相同

示例:

int dayOfWeek = 2;
String weekday = switch (dayOfWeek) {
    case 1:
        yield "星期一";
    case 2:
        yield "星期二";
    case 3:
        yield "星期三";
    case 4:
        yield "星期四";
    case 5:
        yield "星期五";
    case 6:
        yield "星期六";
    default:
        yield "星期日";
};
System.out.println(weekday);

三、什么是case穿透?

在java的switch非簡化語句中,當(dāng)匹配到的case中沒加break;的時候,那就會執(zhí)行當(dāng)前case里面的語句,以及這個switch語句中當(dāng)前case下面的所有case中或者是default中的語句。直到遇到break;為止

以下是有關(guān)case穿透的實驗代碼:

public static void main(String[] args) {
    String date = "周二";

    switch(date){
        case "周一":
            System.out.println("周一");
        case "周二":
            System.out.println("周二");
        case "周三":
            System.out.println("周三");
        default:
            System.out.println("其他");
    }
}

輸出周二、周三、其他

四、示例

4.1、標(biāo)準(zhǔn)示例

public static void main(String[] args) {
    String date = "周一";

    switch(date){
        case "周一":
            System.out.println("工作日");
            break;
        case "周二":
            System.out.println("工作日");
            break;
        case "周三":
            System.out.println("工作日");
            break;
        default:
            System.out.println("其他");
            break;
    }
}

4.2、錯誤示例

由于switch語句中整體都沒加break, 所以語句會在遇到第一個符合的case開始執(zhí)行,直到遇到break或switch語句結(jié)束

public static void main(String[] args) {
    String date = "周二";

    switch(date){
        case "周一":
            System.out.println("周一");
        case "周二":
            System.out.println("周二");
        case "周三":
            System.out.println("周三");
        default:
            System.out.println("其他");
    }
}

輸出周二、周三、其他

4.3、引申用法(多條件合并)

上面寫的案例感覺很多邏輯重復(fù)的,能否多個條件合并在一起呢?當(dāng)然是可以的

方式一:

public static void main(String[] args) {
    String date = "周一";

    switch(date){
        case "周一":
        case "周二":
        case "周三":
            System.out.println("工作日");
            break;
        default:
            System.out.println("其他");
            break;
    }
}

由于case "周一"后面沒有跟break;所以會一直走下去,直到遇到break。因此可以利用這種方式實現(xiàn)少些代碼。

方式二:java14引入

注意:此種方式需要jdk版本是jdk14及以上

public static void main(String[] args) {
   String date = "周一";

    switch(date){
        case "周一","周二","周三":
            System.out.println("工作日");
            break;
        default:
            System.out.println("其他");
            break;
    }
}

總結(jié) 

到此這篇關(guān)于java中switch條件語句的三種語法、用法及支持的參數(shù)類型的文章就介紹到這了,更多相關(guān)java switch條件語句用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring AOP的底層實現(xiàn)方式-代理模式

    Spring AOP的底層實現(xiàn)方式-代理模式

    這篇文章主要介紹了Spring AOP的底層實現(xiàn)方式-代理模式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java8如何基于flatMap處理異常函數(shù)

    Java8如何基于flatMap處理異常函數(shù)

    這篇文章主要介紹了Java8如何基于flatMap處理異常函數(shù),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • springMVC?@RestControllerAdvice注解使用方式

    springMVC?@RestControllerAdvice注解使用方式

    這篇文章主要介紹了springMVC?@RestControllerAdvice注解使用方式,下面通過一個簡單的示例,演示如何使用?@RestControllerAdvice,感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • idea環(huán)境下Maven無法正常下載pom中配置的包問題

    idea環(huán)境下Maven無法正常下載pom中配置的包問題

    這篇文章主要介紹了idea環(huán)境下Maven無法正常下載pom中配置的包的問題,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • SpringBoot整合Minio的示例代碼

    SpringBoot整合Minio的示例代碼

    這篇文章主要介紹了SpringBoot整合Minio的示例代碼,本文通過示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • 說說字符串轉(zhuǎn) OffSetDateTime 你真的會用嗎

    說說字符串轉(zhuǎn) OffSetDateTime 你真的會用嗎

    這篇文章主要介紹了字符串轉(zhuǎn) OffSetDateTime 你真的會用嗎?具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • java8 LocalDate LocalDateTime等時間類用法實例分析

    java8 LocalDate LocalDateTime等時間類用法實例分析

    這篇文章主要介紹了java8 LocalDate LocalDateTime等時間類用法,結(jié)合具體實例形式分析了LocalDate、LocalTime、LocalDateTime等日期時間相關(guān)類的功能與具體使用技巧,需要的朋友可以參考下
    2017-04-04
  • Java通俗易懂系列設(shè)計模式之策略模式

    Java通俗易懂系列設(shè)計模式之策略模式

    這篇文章主要介紹了Java通俗易懂系列設(shè)計模式之策略模式,對設(shè)計模式感興趣的同學(xué),一定要看一下
    2021-04-04
  • java中復(fù)雜查詢sql語句該怎么寫

    java中復(fù)雜查詢sql語句該怎么寫

    我們知道在java連接數(shù)據(jù)庫之后,需要數(shù)據(jù)庫的sql語句,下面這篇文章主要給大家介紹了關(guān)于java中復(fù)雜查詢sql語句該怎么寫的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-11-11
  • 圖文精講java常見分布式事務(wù)理論與解決方案

    圖文精講java常見分布式事務(wù)理論與解決方案

    對于分布式系統(tǒng),最簡單的理解就是一堆機器對外提供服務(wù),相比單體服務(wù),它可以承受更高的負載,但是分布式系統(tǒng)也帶了一系列問題,今天帶大家搞懂和分布式相關(guān)的常見理論和解決方案
    2021-11-11

最新評論