在Java语言中的流程控制语句中,switch-case可以很好的控制如果...那么的关系,可以说是可以与条件语句替换的语句

基本语法格式

switch(表达式) {

    case 常量表达式1:

        语句1;

        break; 

    ....



    case 常量表达式2:

        语句2;

        break;

    default:

        语句;

}

通过switch(表达式)来接受参数,再通过case来比较,如果传入的参数等于case后的就执行该判断后的语句。也就是谁先判断到,那谁就是这个流程的操作入口。

  • 需要注意的几点

  1.switch的表达式可以是:byte、short、int 或者 char。从 Java SE 7 开始,         switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面         量。

  1. switch 可以有多个case,case后必须是常量。
  2. switch表达式的值结果必须和case后面的表达式类型一致。
  3. 语句中的break不是必须写的,如果不写,哪个case执行完以后,会接着执行后面的case。写了break,那就执行该条case时候,执行完成后则跳出switch。
  4. switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句。

格式优化

我平常的写法是,给每个case后要执行的语句用{}包裹起来,这样看起代码更有条理,一眼就能看出case后需要执行什么代码。

switch(表达式){

    case 常量表达式1: {   

         语句1;    

        break; 

    }


    ....



    case 常量表达式2: { 

        语句2;    

        break;

    }



    default:语句;

}

实例

  • 所有case都带break
int i=5;

switch(i)

{   

    case 1: {

         System.out.println(1);       

         break;

    }      



    case 2: {

        System.out.println(2);        

        break;

    }     



    case 3: {

        System.out.println(3);      

       break;

    }     

  

    default: {

       System.out.println("default");    

       break;

    }
       
}

这种情况,结果是再遇到相对应的case后执行完语句就跳出swihch语句,上面的例子,因为没有匹配的case,则执行default,打印出“default”;

  • 存在case不带break
int i=2;

switch(i)

{  

    case 1: {

        System.out.println(1);       

        break;

    }    

  

    case 2: {
        System.out.println(2);

    }    

  

    case 3: {

       System.out.println(3);      

 break;

    }       



    default: {

       System.out.println("default");       

       break;

    }
       

}

// 输出打印结果:

2

3

上面的例子,再case判断为2的执行语句中,没有break。当匹配到2的时候,执行打印2,然后再去执行下面的语句。直到case 3中的break跳出switch。

  • default的位置

平常写的时候,default都是放组后一个。那如果任意放一个位置呢?

int i=1; // int i = 9;

switch(i){  

    case 1: {

        System.out.println(1);

   }  

   

    default: {
       System.out.println("default");

   }   



    case 2: {
        System.out.println(2);

   }    

  

    case 3: {
       System.out.println(3);
     
   }
       
 

}

// 输出打印结果:

1

default

2

3

// 把int i 的初始值设置为9,则打印出:

default

2

3

default的功能和case的是一样的,也可以作为一个判断,如果匹配,也成为switch执行的一个入口。