java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java不带break将导致case穿透

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 ;
			
		
		}
		
	}
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文