最近在项目中有根据传入不同的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关键字,不加可能就会出大问题了。
标签:case,语句,Java,default,break,switch,println From: https://www.cnblogs.com/hg-blogs/p/16975548.html