Java不带break将导致case穿透问题
Java不带break将导致case穿透
case语句中要带break,不然switch找到了对应的case入口,后面的case(包括default)选择都被忽略,全部直接执行语句体,直到遇到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并执行到case3(case3有break)结束,发生case穿透
Java Switch结构 关于case穿透小细节
switch语句使用的注意事项
1) default语句是可以放在语句中的任何位置,不影响执行流程!
(建议default语句使用的时候放在语句末尾)
如果放在语句中,最好带上break,否则会造成case穿透!
2) switch语句的结束条件:
遇见break结束或者程序默认执行到末尾!
3) case语句后面的值只能是常量,不能变量(Java是一种强类型语言)
javascript:前端,简称js,弱类型语言 (switch语句的case后面既可以是常量也可以变量)
import java.util.Scanner;
class SwitchDemo2{
public static void main(String[] args){
//创建键盘录入对象
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


最新评论