Java 中 switch 的三种用法

一、Java 中 switch 的三种用法

1、标准方式: 冒号 有直通行为

使用 break 防止 case 代码执行穿透

2、 - > 用法: 箭头 无直通行为

使用 switch 标准方式编写代码太多的 break 造成代码冗余可读性不高
可以借助函数式接口和 lambda 表达式简化书写

3、yield 用法:返回值

二、四种方式

1、switch 语句,有直通行为(标准方式)

switch(seasonName){
	case "Spring":
		System.out.println("spring time");
	case "Summer","Winter":
		numLetters = 6;
		break;
	case "Fall":
		numLetters = 4;
		break;
	default:
		numLetters = -1;
}

使用 break 防止 case 代码执行穿透

2、switch 表达式,有直通行为(Java 14引入)

int numLetters
numLetters = switch(seasonName){
	case "Spring":
		System.out.println("spring time");
	case "Summer","Winter":
		yield 6;
	case "Fall":
		yield 4;
	default:
		yield -1;
}

3、switch 语句,无直通行为

switch(seasonName){
	case "Spring" -> {
		System.out.println("spring time");
		numLetters = 6;
		}
	case "Summer","Winter" -> numLetters = 6;
	case "Fall" -> numLetters = 4;
	default -> numLetters = -1;
}

4、switch 表达式,无直通行为

int numLetters
numLetters = switch(seasonName){
	case "Spring" ->{
		System.out.println("spring time");
		yield 6;
		}
	case "Summer","Winter" -> 6;
	case "Fall" -> 4;
	default -> -1;
}

注意

  1. switch() 括号内 seasonName,应与 case 后常量类型保持一致,或者是可以自动转换成可以互相比较的类型。
  2. case 标签可以是:类型为 char、byte、short 或 int 的常量表达式;枚举常量 enum;字符串字面量 String;多个字符串用逗号分隔。
  3. case 子句中的值必须是常量,不能是变量。
  4. 在语句中,default 是可选的。
  5. break 和 yield 语句用来在执行完一个 case 分支后使程序跳出 switch 语句,如果没有 break 或 yield,程序会顺序执行到 switch 结尾,产生直通行为。
  6. 不能在一个 switch 语句中混合使用冒号和箭头。
  7. 与 break 语句类似,yield 会终止执行。但与 break 不同的是,yield 还会生成一个值,这就是表达式的值。

三、java switch 表达式

public class Test {
	enum Alpha{A,B,C,D,E}
	static char fun(Alpha alpha){
		var r = switch (alpha){
			case A -> 'a';
			case B -> 'b';
			case C -> 'c';
			case D -> 'd';
		};
		return r;
	}

	public static void main(String[] args){	
		System.out.print(fun(Alpha.A));	
	}
}

Switch 语句与表达式的区别:

  1. switch 代码块出现在了赋值运算符的右侧;
  2. 一个 case 语句,可以处理多个情景;
  3. 新的情景操作符,“->”,它是一个箭头标识符;
  4. 箭头标识符右侧的数值。这个数值,代表的就是该匹配情景下,switch
    表达式的数值。需要注意的是,箭头标识符右侧可以是表达式、代码块或者异常抛出语句,而不能是其他的形式;
  5. yield 语句产生的值看成是 switch 表达式的返回值。所以,yield 只能用在 switch 表达式里。

在 switch 语句中用 break 返回 switch 表达式的值:

var r = switch (alpha){
	case A:
		break 'a';
	case B:
		break 'b';
	case C:
		break 'c';
	case D:
		break 'd';
	case E:
		break 'e';
};

你可能感兴趣的:(Java,基础,java,开发语言,spring)