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

总结

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

相关文章

  • Spring Cloud 的 Hystrix.功能及实践详解

    Spring Cloud 的 Hystrix.功能及实践详解

    这篇文章主要介绍了Spring Cloud 的 Hystrix.功能及实践详解,Hystrix 具备服务降级、服务熔断、线程和信号隔离、请求缓存、请求合并以及服务监控等强大功能,需要的朋友可以参考下
    2019-07-07
  • Spring+Quartz实现动态任务调度详解

    Spring+Quartz实现动态任务调度详解

    这篇文章主要介绍了Spring+Quartz实现动态任务调度详解,最近经常基于spring boot写定时任务,并且是使用注解的方式进行实现,分成的方便将自己的类注入spring容器,需要的朋友可以参考下
    2024-01-01
  • 关于SpringMVC对Restful风格的支持详解

    关于SpringMVC对Restful风格的支持详解

    Restful就是一个资源定位及资源操作的风格,不是标准也不是协议,只是一种风格,是对http协议的诠释,下面这篇文章主要给大家介绍了关于SpringMVC对Restful风格支持的相关资料,需要的朋友可以参考下
    2022-01-01
  • 详解mybatis三种分页方式

    详解mybatis三种分页方式

    本文主要介绍了详解mybatis三种分页方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • springboot整合mybatisplus,找不到bean解决方案

    springboot整合mybatisplus,找不到bean解决方案

    文章主要讨论了在使用MyBatisPlus与SpringBoot集成时遇到的问题及解决方案,包括确保@MapperScan注解正确配置、调整SpringBoot版本以匹配MyBatisPlus、检查SpringBoot与JDK版本的兼容性,以及尝试将MySQL数据库直接连接到IDEA中等方法
    2026-04-04
  • Springcloud eureka搭建高可用集群过程图解

    Springcloud eureka搭建高可用集群过程图解

    这篇文章主要介绍了Springcloud eureka搭建高可用集群过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Java 模拟真正的并发请求详情

    Java 模拟真正的并发请求详情

    有时需要测试一下某个功能的并发性能,又不要想借助于其他工具,索性就自己的开发语言,来一个并发请求就最方便了。下文我们就来学习Java 如何模拟真正的并发请求
    2021-09-09
  • Java中class和Class的区别示例详解

    Java中class和Class的区别示例详解

    class 是java的关键字,在声明java类时使用,Class是java JDK提供的一个类,完整路径为java.lang.Class,下面这篇文章主要给大家介绍了关于Java中class和Class区别的相关资料,需要的朋友可以参考下
    2022-04-04
  • springboot打包如何忽略Test单元测试

    springboot打包如何忽略Test单元测试

    这篇文章主要介绍了springboot打包如何忽略Test单元测试,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Java如何在沙箱环境中测试支付宝支付接口

    Java如何在沙箱环境中测试支付宝支付接口

    这篇文章主要介绍了Java如何在沙箱环境中测试支付宝支付接口,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10

最新评论