Java不帶break將導(dǎo)致case穿透問(wèn)題
Java不帶break將導(dǎo)致case穿透
case語(yǔ)句中要帶break,不然switch找到了對(duì)應(yīng)的case入口,后面的case(包括default)選擇都被忽略,全部直接執(zhí)行語(yǔ)句體,直到遇到break或switch結(jié)束
案例源代碼:
public class CaseDemo { public static void main(String[] args){ int x = 2 ; switch(x){ case 1: System.out.println("case 1"); //break; case 2: System.out.println("case 2"); //break; case 3: System.out.println("case 3"); break; default: System.out.println("default"); break; } } }
輸出:
case 2
case 3
分析:
可見(jiàn)switch找到了case2并執(zhí)行到case3(case3有break)結(jié)束,發(fā)生case穿透
Java Switch結(jié)構(gòu) 關(guān)于case穿透小細(xì)節(jié)
switch語(yǔ)句使用的注意事項(xiàng)
1) default語(yǔ)句是可以放在語(yǔ)句中的任何位置,不影響執(zhí)行流程!
(建議default語(yǔ)句使用的時(shí)候放在語(yǔ)句末尾)
如果放在語(yǔ)句中,最好帶上break,否則會(huì)造成case穿透!
2) switch語(yǔ)句的結(jié)束條件:
遇見(jiàn)break結(jié)束或者程序默認(rèn)執(zhí)行到末尾!
3) case語(yǔ)句后面的值只能是常量,不能變量(Java是一種強(qiáng)類(lèi)型語(yǔ)言)
javascript:前端,簡(jiǎn)稱(chēng)js,弱類(lèi)型語(yǔ)言 (switch語(yǔ)句的case后面既可以是常量也可以變量)
import java.util.Scanner; class SwitchDemo2{ public static void main(String[] args){ //創(chuàng)建鍵盤(pán)錄入對(duì)象 Scanner sc = new Scanner(System.in) ; //提示并接收 System.out.println("請(qǐng)您輸入一個(gè)數(shù)據(jù)(1-7):") ; int week = sc.nextInt() ; int b = 3 ; switch(week){ default: System.out.println("數(shù)據(jù)不合法...") ; //break ; case 1 : System.out.println("星期一") ; //break ; case 2: System.out.println("星期二") ; break ; //case b: //需要常量表達(dá)式 :錯(cuò)誤的寫(xiě)法 case 3: System.out.println("星期三") ; break ; case 4: System.out.println("星期四") ; //break ; case 5: System.out.println("星期五") ; //break ; case 6: System.out.println("星期六") ; //break ; case 7: System.out.println("星期日") ; //break ; } } }
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringAOP實(shí)現(xiàn)自定義接口權(quán)限控制
本文主要介紹了SpringAOP實(shí)現(xiàn)自定義接口權(quán)限控制,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-11-11springboot使用jasypt加密庫(kù)實(shí)現(xiàn)數(shù)據(jù)庫(kù)加解密示例代碼
這篇文章主要給大家介紹了關(guān)于springboot使用jasypt加密庫(kù)實(shí)現(xiàn)數(shù)據(jù)庫(kù)加解密的相關(guān)資料,Jasypt是一個(gè)用于配置文件加密的Java庫(kù),它可以用來(lái)加密和解密配置文件中的敏感信息,如數(shù)據(jù)庫(kù)密碼、API?密鑰等,需要的朋友可以參考下2024-04-04idea中無(wú)法自動(dòng)裝配未找到 ‘XXXXXXX‘ 類(lèi)型的 Bean
本文主要介紹了idea中無(wú)法自動(dòng)裝配未找到 ‘XXXXXXX‘ 類(lèi)型的 Bean的原因及三種解決方法,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03關(guān)于Java大整數(shù)運(yùn)算之BigInteger類(lèi)
這篇文章主要介紹了關(guān)于Java大整數(shù)運(yùn)算之BigInteger類(lèi),BigInteger提供高精度整型數(shù)據(jù)類(lèi)型及相關(guān)操作,所有操作中,都以二進(jìn)制補(bǔ)碼形式表示,需要的朋友可以參考下2023-05-05Mybatis之動(dòng)態(tài)SQL使用小結(jié)(全網(wǎng)最新)
MyBatis令人喜歡的一大特性就是動(dòng)態(tài)SQL,?在使用JDBC的過(guò)程中,?根據(jù)條件進(jìn)行SQL的拼接是很麻煩且很容易出錯(cuò)的,MyBatis通過(guò)OGNL來(lái)進(jìn)行動(dòng)態(tài)SQL的使用解決了這個(gè)麻煩,對(duì)Mybatis動(dòng)態(tài)SQL相關(guān)知識(shí)感興趣的朋友跟隨小編一起看看吧2024-05-05Java中生成隨機(jī)數(shù)的實(shí)現(xiàn)方法總結(jié)
這篇文章主要介紹了Java中生成隨機(jī)數(shù)的實(shí)現(xiàn)方法總結(jié),其中多線(xiàn)程并發(fā)的實(shí)現(xiàn)方式尤為exciting,需要的朋友可以參考下2015-11-11IDEA連接Mysql數(shù)據(jù)庫(kù)的詳細(xì)圖文教程
項(xiàng)目開(kāi)發(fā)時(shí)使用Intellij IDEA連接本地?cái)?shù)據(jù)庫(kù),將數(shù)據(jù)庫(kù)可視化,還可對(duì)數(shù)據(jù)庫(kù)表直接進(jìn)行增刪改查操作,方便快捷又清晰,下面這篇文章主要給大家介紹了關(guān)于IDEA連接Mysql數(shù)據(jù)庫(kù)的詳細(xì)圖文教程,需要的朋友可以參考下2023-03-03java實(shí)現(xiàn)簡(jiǎn)易連連看小游戲
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)易連連看小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05