Java不带break将导致case穿透问题
作者:大白的求知路
这篇文章主要介绍了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 ; } } }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。