switch表达式、case穿透

简介: 记得第一次学switch的时候那是还是学习c语言的时候,整体的写if-else,switch,现在回想起来已经是很多年前的事了,好了今天让我们再来回顾下简单的switch语法switch(n){case 1: 执行代码块 1 break;case 2: 执行代码块 2 b...

记得第一次学switch的时候那是还是学习c语言的时候,整体的写if-else,switch,现在回想起来已经是很多年前的事了,好了今天让我们再来回顾下简单的switch

语法

switch(n)
{
case 1:
  执行代码块 1
  break;
case 2:
  执行代码块 2
  break;
default:
  n 与 case 1 和 case 2 不同时执行的代码
}

格式解释说明

switch表达式:可以是byte,short,int,char
JDK5以后可以是枚举
JDK7以后可以是字符串
case:后面的值就是要和表达式进行比较的值
break:表示程序到这里中断,跳出switch语句
default:如果所有的情况都不匹配,就执行这里,相当于if语句中的else

工作原理

A:首先设置表达式 n(通常是一个变量)
B:随后表达式的值会与结构中的每个 case 的值做比较,如果有就执行对应的语句体,看到break就结束。
C:如果没有匹配,就执行default的语句体。

注意事项

A:case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的值
B:default可以省略吗?
  可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。
C:break可以省略吗?
  可以省略,但是结果可能不是我们想要的。
  会出现一个现象:case穿透,最终我们建议不要省略
D:default一定要在最后吗?

  不是,可以在任意位置。但是建议在最后。

E:switch语句的结束条件

  a:遇到break就结束了
  b:执行到末尾就结束了

Case案例演示

public static void main(String[] args)
    {
        case1();

        System.out.println("----------case1------------");

        case2();

        System.out.println("----------case2------------");

        case3();

        System.out.println("----------case3------------");

        case4();

        System.out.println("----------case4------------");

        case4_0();

        System.out.println("----------case4_0------------");

        case4_1();

        System.out.println("----------case4_1------------");

        case5();

        System.out.println("-----------case5-----------");

        case6();

        System.out.println("-----------case6-----------");
    }
private static void case1()
    {
        switch(NUMBER){
            case 9:
                System.out.println(9);
                break;
            case 10:
                System.out.println(10);
                break;
            case 11:
                System.out.println(11);
                break;
            default:
                System.out.println("都不匹配");
        }
    }

    private static void case2()
    {
        switch(NUMBER){
            case 9:
                System.out.println(9);
            case 10:
                System.out.println(10);
            case 11:
                System.out.println(11);
            default:
                System.out.println("都不匹配");
        }
    }

    private static void case3()
    {
        switch(NUMBER){
            default:
                System.out.println("都不匹配");
                break;  //break有无不影响结果
            case 9:
                System.out.println(9);
                break;
            case 10:
                System.out.println(10);
                break;
            case 11:
                System.out.println(11);
                break;
        }
    }

    private static void case4()
    {
        switch(NUMBER){
            default:
                System.out.println("都不匹配");
            case 9:
                System.out.println(9);
            case 12:
                System.out.println(12);
            case 11:
                System.out.println(11);
        }
    }

    private static void case4_0()
    {
        switch(NUMBER){
            default:
                System.out.println("都不匹配");
                break; //和case4 比较 是有区别的
            case 9:
                System.out.println(9);
            case 12:
                System.out.println(12);
            case 11:
                System.out.println(11);
        }
    }

    private static void case4_1()
    {
        switch(NUMBER){
            default:
                System.out.println("都不匹配");
            case 9:
                System.out.println(9);
            case 10:
                System.out.println(10);
            case 11:
                System.out.println(11);
        }
    }

    private static void case5()
    {
        switch(NUMBER){
            default:
                System.out.println("都不匹配");
            case 9:
                System.out.println(9);
                break;
            case 12:
                System.out.println(12);
                break;
            case 11:
                System.out.println(11);
                break;
        }
    }

    private static void case6()
    {
        switch(NUMBER){
            default:
                System.out.println("都不匹配");
                break; //case5 比较 是有区别的
            case 9:
                System.out.println(9);
                break;
            case 12:
                System.out.println(12);
                break;
            case 11:
                System.out.println(11);
                break;
        }
    }

执行结果

10
----------case1------------
10
11
都不匹配
----------case2------------
10
----------case3------------
都不匹配
9
12
11
----------case4------------
都不匹配
----------case4_0------------
10
11
----------case4_1------------
都不匹配
9
-----------case5-----------
都不匹配
-----------case6-----------

总结:

case穿透和break有关,只有当遇到break时才会终止,不然会继续执行后面case中的代码块

default的位置不会影响执行结果,不管你编写的代码中default放在那里,这里的条件判断都是先按顺序比较其他非default值,当这些条件都不满足的时候,才跳转到default的相应代码处执行。

开开心心编码,快快乐乐生活。
目录
相关文章
|
13天前
|
C#
c#中switch case语句的用法
C#中的 `switch case`语句提供了一种简洁而高效的方式来处理多个条件分支。通过了解其基本语法、注意事项和高级用法,可以在实际开发中灵活运用 `switch case`,提高代码的可读性和维护性。希望本文能帮助你更好地理解和使用C#中的 `switch case`语句。
38 0
|
7月前
|
编译器
switch 语句
switch 语句
69 3
|
3月前
|
Java Spring
巧用switch-case消除条件判断
`shigen`是一位致力于撰写博客文章的作者,通过记录成长历程、分享见解并留住感动瞬间。在其文章中,`shigen`介绍了多种消除if-else代码的方法,包括使用HashMap、枚举以及switch-case。最新示例展示了如何通过简洁的switch-case语句处理不同类型的请求,代码优雅且直观。此外,还预告了下一章节将探讨如何利用Spring框架的IOC能力来进一步优化条件判断。与`shigen`一起探索编程世界的每一天都充满新意!**个人IP:shigen**
36 0
巧用switch-case消除条件判断
|
2月前
|
前端开发 编译器
为什么switch里的case没有break不行
为什么switch里的case没有break不行
|
7月前
|
编译器 C语言
learn_C_deep_7 (switch 语句的基本理解、case 的作用、break的作用switch、case 推荐规则)
learn_C_deep_7 (switch 语句的基本理解、case 的作用、break的作用switch、case 推荐规则)
|
7月前
|
Shell 开发工具
利用case...in…esac条件判断
【1月更文挑战第7天】利用case...in…esac条件判断。
72 0
switch case 执行
switch case 执行
141 0
|
C#
switch case语句
switch case语句
203 0
|
Java
switch case 语句有如下规则
switch case 语句有如下规则
183 0
|
PHP C#
C#(八)之判断语句IF SWITCH
IF / ELSEIF / ELSE If 满足条件择执行; 多个elseif时,其中有一个满足条件,那个之后的elseif都不会执行; else上面都不满足时执行。 Switch:这个按照正常语法写就可以了,不要忘记写break;
243 0
C#(八)之判断语句IF SWITCH