Java不帶break將導(dǎo)致case穿透問題
Java不帶break將導(dǎo)致case穿透
case語句中要帶break,不然switch找到了對(duì)應(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語句使用的注意事項(xiàng)
1) default語句是可以放在語句中的任何位置,不影響執(zhí)行流程!
(建議default語句使用的時(shí)候放在語句末尾)
如果放在語句中,最好帶上break,否則會(huì)造成case穿透!
2) switch語句的結(jié)束條件:
遇見break結(jié)束或者程序默認(rèn)執(zhí)行到末尾!
3) case語句后面的值只能是常量,不能變量(Java是一種強(qiáng)類型語言)
javascript:前端,簡(jiǎn)稱js,弱類型語言 (switch語句的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)文章
SpringAOP實(shí)現(xiàn)自定義接口權(quán)限控制
本文主要介紹了SpringAOP實(shí)現(xiàn)自定義接口權(quán)限控制,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-11-11
springboot使用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ù),它可以用來加密和解密配置文件中的敏感信息,如數(shù)據(jù)庫(kù)密碼、API?密鑰等,需要的朋友可以參考下2024-04-04
idea中無法自動(dòng)裝配未找到 ‘XXXXXXX‘ 類型的 Bean
本文主要介紹了idea中無法自動(dòng)裝配未找到 ‘XXXXXXX‘ 類型的 Bean的原因及三種解決方法,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03
關(guān)于Java大整數(shù)運(yùn)算之BigInteger類
這篇文章主要介紹了關(guān)于Java大整數(shù)運(yùn)算之BigInteger類,BigInteger提供高精度整型數(shù)據(jù)類型及相關(guān)操作,所有操作中,都以二進(jìn)制補(bǔ)碼形式表示,需要的朋友可以參考下2023-05-05
Mybatis之動(dòng)態(tài)SQL使用小結(jié)(全網(wǎng)最新)
MyBatis令人喜歡的一大特性就是動(dòng)態(tài)SQL,?在使用JDBC的過程中,?根據(jù)條件進(jìn)行SQL的拼接是很麻煩且很容易出錯(cuò)的,MyBatis通過OGNL來進(jìn)行動(dòng)態(tài)SQL的使用解決了這個(gè)麻煩,對(duì)Mybatis動(dòng)態(tài)SQL相關(guān)知識(shí)感興趣的朋友跟隨小編一起看看吧2024-05-05
Java中生成隨機(jī)數(shù)的實(shí)現(xiàn)方法總結(jié)
這篇文章主要介紹了Java中生成隨機(jī)數(shù)的實(shí)現(xiàn)方法總結(jié),其中多線程并發(fā)的實(shí)現(xiàn)方式尤為exciting,需要的朋友可以參考下2015-11-11
IDEA連接Mysql數(shù)據(jù)庫(kù)的詳細(xì)圖文教程
項(xiàng)目開發(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-03
java實(shí)現(xiàn)簡(jiǎn)易連連看小游戲
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)易連連看小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05

