Java switch case语句

最近在项目中有根据传入不同的type来进行处理不同业务的需求,所以用到了switch case,而自己又没有深刻的总结过这方面的代码,导致代码穿透了,还好自测发现了,不然搞个乌龙。

那么这个用法应该怎么用呢? 我们先来了解这个关键字的用法是什么:在菜鸟教程中定义时这样的:switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。

语法规则如下:

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

switch case 语句有如下规则:

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

  • switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。

  • case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。

  • 当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。

  • 当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。

  • switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句。

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

如下例子:

public static void main(String args[]){
      int i = 5;
      switch(i){
         case 0:
            System.out.println("0");
         case 1:
            System.out.println("1");
         case 2:
            System.out.println("2");
         default:
            System.out.println("default");
      }
   }

该例子传入一个表达式i,i定义为一个数字,那么case的时候就只能是数字,这里因为没有break;关键字,所以会穿透,依次往下执行,又因为没有匹配到5,最后的输出结果就是default。

如下例子:

public static void main(String args[]){
      int i = 1;
      switch(i){
         case 0:
            System.out.println("0");
         case 1:
            System.out.println("1");
         case 2:
            System.out.println("2");
         default:
            System.out.println("default");
      }
   }

该例子传入一个i,i=1,匹配到1了,从1开始执行业务代码,那么又因为没有break关键字,所以也会穿透,最后的输出结果就是1,2,default。

在真实的项目中使用这种switch case特别需要注意加上break关键字,不加可能就会出大问题了。

posted @ 2022-12-12 11:07  程序员hg  阅读(143)  评论(0编辑  收藏  举报