Java不带break将导致case穿透问题

 更新时间:2024年02月07日 09:10:28   作者:大白的求知路  
这篇文章主要介绍了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 ;
			
		
		}
		
	}
}

总结

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

相关文章

  • SpringAOP实现自定义接口权限控制

    SpringAOP实现自定义接口权限控制

    本文主要介绍了SpringAOP实现自定义接口权限控制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-11-11
  • springboot使用jasypt加密库实现数据库加解密示例代码

    springboot使用jasypt加密库实现数据库加解密示例代码

    这篇文章主要给大家介绍了关于springboot使用jasypt加密库实现数据库加解密的相关资料,Jasypt是一个用于配置文件加密的Java库,它可以用来加密和解密配置文件中的敏感信息,如数据库密码、API 密钥等,需要的朋友可以参考下
    2024-04-04
  • idea中无法自动装配未找到 ‘XXXXXXX‘ 类型的 Bean

    idea中无法自动装配未找到 ‘XXXXXXX‘ 类型的 Bean

    本文主要介绍了idea中无法自动装配未找到 ‘XXXXXXX‘ 类型的 Bean的原因及三种解决方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • 关于Java大整数运算之BigInteger类

    关于Java大整数运算之BigInteger类

    这篇文章主要介绍了关于Java大整数运算之BigInteger类,BigInteger提供高精度整型数据类型及相关操作,所有操作中,都以二进制补码形式表示,需要的朋友可以参考下
    2023-05-05
  • 深入理解Hibernate中的flush机制

    深入理解Hibernate中的flush机制

    这篇文章主要介绍了深入理解Hibernate中的flush机制,本文是对flush机制深入研究得出的一些结论总结,需要的朋友可以参考下
    2015-01-01
  • Mybatis之动态SQL使用小结(全网最新)

    Mybatis之动态SQL使用小结(全网最新)

    MyBatis令人喜欢的一大特性就是动态SQL, 在使用JDBC的过程中, 根据条件进行SQL的拼接是很麻烦且很容易出错的,MyBatis通过OGNL来进行动态SQL的使用解决了这个麻烦,对Mybatis动态SQL相关知识感兴趣的朋友跟随小编一起看看吧
    2024-05-05
  • Java中生成随机数的实现方法总结

    Java中生成随机数的实现方法总结

    这篇文章主要介绍了Java中生成随机数的实现方法总结,其中多线程并发的实现方式尤为exciting,需要的朋友可以参考下
    2015-11-11
  • IDEA连接Mysql数据库的详细图文教程

    IDEA连接Mysql数据库的详细图文教程

    项目开发时使用Intellij IDEA连接本地数据库,将数据库可视化,还可对数据库表直接进行增删改查操作,方便快捷又清晰,下面这篇文章主要给大家介绍了关于IDEA连接Mysql数据库的详细图文教程,需要的朋友可以参考下
    2023-03-03
  • java实现简易连连看小游戏

    java实现简易连连看小游戏

    这篇文章主要为大家详细介绍了java实现简易连连看小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • java7改善后的异常处理

    java7改善后的异常处理

    在本篇文章里小编给大家整理的是关于java7改善后的异常处理知识点总结,有需要的朋友们参考下。
    2019-11-11

最新评论