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

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

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

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

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

二、switch三種語(yǔ)法

Java中switch的三種用法詳解:

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

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

語(yǔ)法:

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

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

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

注意

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

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

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

(1)對(duì)四個(gè)包裝類(lèi)的支持是因?yàn)閖ava編譯器在底層手動(dòng)進(jìn)行拆箱。
(2)而對(duì)枚舉類(lèi)的支持是因?yàn)槊杜e類(lèi)有一個(gè)ordinal方法,該方法實(shí)際上是一個(gè)int類(lèi)型的數(shù)值。
(3)jdk1.7開(kāi)始支持String類(lèi)型,但實(shí)際上String類(lèi)型有一個(gè)hashCode算法,結(jié)果也是int類(lèi)型。
(4)而byte short char類(lèi)型可以在不損失精度的情況下向上轉(zhuǎn)型成int類(lèi)型.所以總的來(lái)說(shuō),可以認(rèn)為switch中只支持int類(lèi)型。

float、double都不能用于switch語(yǔ)句。

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

2.2、switch - > 用法

jdk12開(kāi)始switch語(yǔ)法支持函數(shù)式接口和lambda表達(dá)式

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

代碼如下:

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

使用 - > 方法更加簡(jiǎn)單, ->的用法其實(shí)只是相當(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;
};

這里來(lái)說(shuō), switch 作為了 一條語(yǔ)句, 所以末尾要加冒號(hào), 其他用法相同

示例:

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非簡(jiǎn)化語(yǔ)句中,當(dāng)匹配到的case中沒(méi)加break;的時(shí)候,那就會(huì)執(zhí)行當(dāng)前case里面的語(yǔ)句,以及這個(gè)switch語(yǔ)句中當(dāng)前case下面的所有case中或者是default中的語(yǔ)句。直到遇到break;為止

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

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、錯(cuò)誤示例

由于switch語(yǔ)句中整體都沒(méi)加break, 所以語(yǔ)句會(huì)在遇到第一個(gè)符合的case開(kāi)始執(zhí)行,直到遇到break或switch語(yǔ)句結(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、引申用法(多條件合并)

上面寫(xiě)的案例感覺(jué)很多邏輯重復(fù)的,能否多個(gè)條件合并在一起呢?當(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 "周一"后面沒(méi)有跟break;所以會(huì)一直走下去,直到遇到break。因此可以利用這種方式實(shí)現(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條件語(yǔ)句的三種語(yǔ)法、用法及支持的參數(shù)類(lèi)型的文章就介紹到這了,更多相關(guān)java switch條件語(yǔ)句用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java實(shí)現(xiàn)屏幕共享功能實(shí)例分析

    java實(shí)現(xiàn)屏幕共享功能實(shí)例分析

    這篇文章主要介紹了java實(shí)現(xiàn)屏幕共享功能的方法,以實(shí)例形式分析了屏幕共享功能的客戶端與服務(wù)端的詳細(xì)實(shí)現(xiàn)方法,是非常具有實(shí)用價(jià)值的技巧,需要的朋友可以參考下
    2014-12-12
  • 一文教你使用Java?Calendar類(lèi)進(jìn)行日期計(jì)算

    一文教你使用Java?Calendar類(lèi)進(jìn)行日期計(jì)算

    在日常開(kāi)發(fā)中,我們常常需要進(jìn)行日期計(jì)算,比如計(jì)算兩個(gè)日期之間的天數(shù)、月數(shù),在Java中,我們可以使用Java?Calendar類(lèi)來(lái)進(jìn)行日期計(jì)算,下面就跟隨小編一起來(lái)學(xué)習(xí)一下吧
    2023-10-10
  • SpringBoot實(shí)戰(zhàn)記錄之?dāng)?shù)據(jù)訪問(wèn)

    SpringBoot實(shí)戰(zhàn)記錄之?dāng)?shù)據(jù)訪問(wèn)

    對(duì)于數(shù)據(jù)訪問(wèn)層,無(wú)論是SQL還是NOSQL,Spring Boot默認(rèn)采用整合Spring Data的方式進(jìn)行統(tǒng)一處理,添加大量自動(dòng)配置,屏蔽了很多設(shè)置,下面這篇文章主要介紹了SpringBoot實(shí)戰(zhàn)記錄之?dāng)?shù)據(jù)訪問(wèn),需要的朋友可以參考下
    2022-04-04
  • SpringBoot解析@Value注解型解析注入時(shí)機(jī)及原理分析

    SpringBoot解析@Value注解型解析注入時(shí)機(jī)及原理分析

    @Value注解可以用來(lái)將外部的值動(dòng)態(tài)注入到Bean中,可以獲取配置文件中的屬性值和通過(guò)SpEl表達(dá)式獲取bean的屬性或方法
    2024-12-12
  • MyBatisCodeHelperPro插件下載及使用教程詳解

    MyBatisCodeHelperPro插件下載及使用教程詳解

    這篇文章主要介紹了MyBatis CodeHelperPro插件使用教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-09-09
  • SpringBoot與GraphQL集成的實(shí)現(xiàn)示例

    SpringBoot與GraphQL集成的實(shí)現(xiàn)示例

    本文主要介紹了SpringBoot與GraphQL集成的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2026-04-04
  • java類(lèi)實(shí)現(xiàn)日期的時(shí)間差的實(shí)例講解

    java類(lèi)實(shí)現(xiàn)日期的時(shí)間差的實(shí)例講解

    在本篇文章里小編給大家整理的是一篇關(guān)于java類(lèi)實(shí)現(xiàn)日期的時(shí)間差的實(shí)例講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-01-01
  • Java執(zhí)行SQL腳本文件到數(shù)據(jù)庫(kù)詳解

    Java執(zhí)行SQL腳本文件到數(shù)據(jù)庫(kù)詳解

    這篇文章主要為大家詳細(xì)介紹了Java執(zhí)行SQL腳本文件到數(shù)據(jù)庫(kù)的相關(guān)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Java多線程鎖機(jī)制相關(guān)原理實(shí)例解析

    Java多線程鎖機(jī)制相關(guān)原理實(shí)例解析

    這篇文章主要介紹了Java多線程鎖機(jī)制相關(guān)原理實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • java代理 jdk動(dòng)態(tài)代理應(yīng)用案列

    java代理 jdk動(dòng)態(tài)代理應(yīng)用案列

    java代理有jdk動(dòng)態(tài)代理、cglib代理,這里只說(shuō)下jdk動(dòng)態(tài)代理,jdk動(dòng)態(tài)代理主要使用的是java反射機(jī)制,需要了解的朋友可以參考下
    2012-11-11

最新評(píng)論

葫芦岛市| 南平市| 同德县| 武山县| 巨鹿县| 大同县| 南投市| 廉江市| 裕民县| 宣恩县| 杂多县| 桦甸市| 南昌市| 塔城市| 黔南| 洪江市| 搜索| 韶关市| 固始县| 河北区| 昌乐县| 正安县| 筠连县| 仁布县| 玉田县| 乌苏市| 应城市| 大冶市| 和政县| 金昌市| 九江县| 长兴县| 清苑县| 桃江县| 利辛县| 东台市| 霸州市| 汉阴县| 古丈县| 昭通市| 崇明县|