Java不帶break將導致case穿透問題
Java不帶break將導致case穿透
case語句中要帶break,不然switch找到了對應的case入口,后面的case(包括default)選擇都被忽略,全部直接執(zhí)行語句體,直到遇到break或switch結束
案例源代碼:
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)結束,發(fā)生case穿透
Java Switch結構 關于case穿透小細節(jié)
switch語句使用的注意事項
1) default語句是可以放在語句中的任何位置,不影響執(zhí)行流程!
(建議default語句使用的時候放在語句末尾)
如果放在語句中,最好帶上break,否則會造成case穿透!
2) switch語句的結束條件:
遇見break結束或者程序默認執(zhí)行到末尾!
3) case語句后面的值只能是常量,不能變量(Java是一種強類型語言)
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("請您輸入一個數據(1-7):") ;
int week = sc.nextInt() ;
int b = 3 ;
switch(week){
default:
System.out.println("數據不合法...") ;
//break ;
case 1 :
System.out.println("星期一") ;
//break ;
case 2:
System.out.println("星期二") ;
break ;
//case b: //需要常量表達式 :錯誤的寫法
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 ;
}
}
}
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
springboot使用jasypt加密庫實現數據庫加解密示例代碼
這篇文章主要給大家介紹了關于springboot使用jasypt加密庫實現數據庫加解密的相關資料,Jasypt是一個用于配置文件加密的Java庫,它可以用來加密和解密配置文件中的敏感信息,如數據庫密碼、API?密鑰等,需要的朋友可以參考下2024-04-04
idea中無法自動裝配未找到 ‘XXXXXXX‘ 類型的 Bean
本文主要介紹了idea中無法自動裝配未找到 ‘XXXXXXX‘ 類型的 Bean的原因及三種解決方法,具有一定的參考價值,感興趣的可以了解一下2024-03-03

