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