Java 杂谈Java

Java:switch case 知多少

2019-08-24  本文已影响1人  一个Coder的自我救赎

概念

switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。相等则执行该分支后的代码。

语法

switch (expression) {
    case value : //语句
        break; //可选
    case value : //语句
        break; //可选
    //你可以有任意数量的case语句
    default : //可选
        //语句
}

规则

switch case 执行时,一定会先进行匹配,匹配成功返回当前 case 的值,再根据是否有 break,判断是否继续输出,或是跳出判断。

相关知识点了解完,开始实际使用下,会有一些比较有意思的情况

实例

  1. 按规则使用,有break语句
        int i = 1 ;
        switch(i) {
            case 0 : System.out.println("zero");
                break;
            case 1 : System.out.println("one");
                break;
            case 2 : System.out.println("two");
                break;
            default:
                System.out.println("default");
        }

输出结果:

one

这种使用方法,与 if else 语句很相似

  1. 不使用break语句
        int i = 1 ;
        switch(i) {
            case 0 : System.out.println("zero");
            case 1 : System.out.println("one");
            case 2 : System.out.println("two");
            default:
                System.out.println("default");
        }

输出结果:

one
two
default

没有 break ,在匹配成功后,会继续往下执行

  1. 匹配不上的情况,检查default的作用
        int i = 4 ;
        switch(i) {
            case 0 : System.out.println("zero");
            case 1 : System.out.println("one");
            case 2 : System.out.println("two");
            default:
                System.out.println("default");
        }

输出结果:

default

下面是一些比较特殊的情况,写法并不严格遵守上面的规则

  1. case可以匹配上:有 break 语句,default 的位置不在最后
        int i = 1 ;
        switch(i) {
            default:
                System.out.println("default");
                break;
            case 0 : System.out.println("zero");
                break;
            case 1 : System.out.println("one");
                break;
            case 2 : System.out.println("two");
                break;
        }

输出结果:

one

此种情况可以认为 default 语句所在位置顺序不重要

  1. case可以匹配上:无 break 语句,default 的位置不在最后
        int i = 1 ;
        switch(i) {
            default:
                System.out.println("default");
            case 0 : System.out.println("zero");
            case 1 : System.out.println("one");
            case 2 : System.out.println("two");
        }

输出结果:

one
two

此种情况也可以认为 default 语句所在位置顺序不重要

  1. case不能匹配上:无 break 语句,default 的位置不在最后
        int i = 4 ;
        switch(i) {
            default:
                System.out.println("default");
            case 0 : System.out.println("zero");
            case 1 : System.out.println("one");
            case 2 : System.out.println("two");
        }

输出结果:

default
zero
one
two

是不是很意外,这种情况下,default 的位置顺序就会对结果有影响

  1. case不能匹配上:无 break 语句,default 的位置不在最后,也不在最前
        int i = 4 ;
        switch(i) {
            case 0 : System.out.println("zero");
            case 1 : System.out.println("one");
            default:
                System.out.println("default");
            case 2 : System.out.println("two");
        }

现在我们先来思考下输出结果会是什么………………
结合上一条,是不是会有一个答案

输出结果:

default
two

总结

上一篇 下一篇

猜你喜欢

热点阅读