赞
踩
1、switch 中的表达式的数据的数据类型为 byte, short, int, char, String(jdk > 1.7支持 String 类型)
2、default 可以放在任意一行,但是不管放在那一行,都会先找第一个case去匹配,如果所有的 case 都不匹配,才会执行 default,default 可以省略不写。
3、break 可以不写,就容易造成 switch 的穿透现象,如果匹配过一次或者执行过 default 之后,都不会再进行二次匹配了,但是语句体内容该执行还是会执行。
JDK 12 对 switch 进行扩展,使其可以用作语句或表达式。
标准方式,使用 break 防止 case 代码执行穿透。
使用 switch 标准方式编写代码太多的 break 造成代码冗余可读性不高, 可以借助函数式接口和 lambda 表达式简化书写。
break 防止 case 代码执行穿透;
switch(seasonName){
case "Spring":
System.out.println("spring time");
case "Summer","Winter":
numLetters = 6;
break;
case "Fall":
numLetters = 4;
break;
default:
numLetters = -1;
}
switch(seasonName){
case "Spring" -> {
System.out.println("spring time");
numLetters = 6;
}
case "Summer","Winter" -> numLetters = 6;
case "Fall" -> numLetters = 4;
default -> numLetters = -1;
}
public class Test { enum Alpha {A, B, C, D, E;} public static void main(String[] args) { System.out.print(fun(Alpha.A)); } static char fun(Alpha alpha) { var r = switch (alpha) { case A -> 'a'; case B -> 'b'; case C -> 'c'; case D -> 'd'; default -> 'x'; }; return r; } }
String seasonName = "Spring";
int numLetters;
numLetters = switch(seasonName){
case "Spring":
System.out.println("spring time");
case "Summer","Winter":
yield 6;
case "Fall":
yield 4;
default:
yield -1;
};
System.out.println(numLetters);
int numLetters;
numLetters = switch(seasonName){
case "Spring" ->{
System.out.println("spring time");
yield 6;
}
case "Summer","Winter" -> 6;
case "Fall" -> 4;
default -> -1;
};
Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一个年的 12 个月份,一个星期的 7 天,方向有东南西北等。
Java 枚举类使用 enum 关键字来定义,各个常量使用逗号 (,) 来分割。
颜色的枚举类
enum Color{ RED, GREEN, BLUE; }
以上枚举类 Color 颜色常量有 RED, GREEN, BLUE,分别表示红色,绿色,蓝色。
enum Color{ RED, GREEN, BLUE; }
public class Test {
public static void main(String[] args){
Color c1 = Color.RED;
System.out.println(c1);
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。