Java不帶break將導(dǎo)致case穿透問題
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
分析:
可見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é)束條件:
遇見break結(jié)束或者程序默認(rèn)執(zhí)行到末尾!
3) case語(yǔ)句后面的值只能是常量,不能變量(Java是一種強(qiáng)類型語(yǔ)言)
javascript:前端,簡(jiǎn)稱js,弱類型語(yǔ)言 (switch語(yǔ)句的case后面既可以是常量也可以變量)
import java.util.Scanner;
class SwitchDemo2{
public static void main(String[] args){
//創(chuàng)建鍵盤錄入對(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ò)誤的寫法
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)文章
Spring Cloud 的 Hystrix.功能及實(shí)踐詳解
這篇文章主要介紹了Spring Cloud 的 Hystrix.功能及實(shí)踐詳解,Hystrix 具備服務(wù)降級(jí)、服務(wù)熔斷、線程和信號(hào)隔離、請(qǐng)求緩存、請(qǐng)求合并以及服務(wù)監(jiān)控等強(qiáng)大功能,需要的朋友可以參考下2019-07-07
Spring+Quartz實(shí)現(xiàn)動(dòng)態(tài)任務(wù)調(diào)度詳解
這篇文章主要介紹了Spring+Quartz實(shí)現(xiàn)動(dòng)態(tài)任務(wù)調(diào)度詳解,最近經(jīng)常基于spring?boot寫定時(shí)任務(wù),并且是使用注解的方式進(jìn)行實(shí)現(xiàn),分成的方便將自己的類注入spring容器,需要的朋友可以參考下2024-01-01
關(guān)于SpringMVC對(duì)Restful風(fēng)格的支持詳解
Restful就是一個(gè)資源定位及資源操作的風(fēng)格,不是標(biāo)準(zhǔn)也不是協(xié)議,只是一種風(fēng)格,是對(duì)http協(xié)議的詮釋,下面這篇文章主要給大家介紹了關(guān)于SpringMVC對(duì)Restful風(fēng)格支持的相關(guān)資料,需要的朋友可以參考下2022-01-01
springboot整合mybatisplus,找不到bean解決方案
文章主要討論了在使用MyBatisPlus與SpringBoot集成時(shí)遇到的問題及解決方案,包括確保@MapperScan注解正確配置、調(diào)整SpringBoot版本以匹配MyBatisPlus、檢查SpringBoot與JDK版本的兼容性,以及嘗試將MySQL數(shù)據(jù)庫(kù)直接連接到IDEA中等方法2026-04-04
Java如何在沙箱環(huán)境中測(cè)試支付寶支付接口
這篇文章主要介紹了Java如何在沙箱環(huán)境中測(cè)試支付寶支付接口,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10

