这是我的代码:
int x = 10;
switch(x) {
case 10:
System.out.println("10");
break;
case 5+5:
System.out.println("5+5");
break;
}
在这种情况下,两种情况都成立,会执行什么?第一种情况,还是两者兼而有之?
这是我的代码:
int x = 10;
switch(x) {
case 10:
System.out.println("10");
break;
case 5+5:
System.out.println("5+5");
break;
}
在这种情况下,两种情况都成立,会执行什么?第一种情况,还是两者兼而有之?
无效:5+5 解析为 10,并且不能有两个case
具有相同常量的子句。
5+5
编译为,10
您的代码具有重复条件,这在 java switch 语句中是非法的。
从规范:
与 switch 语句关联的任何两个 case 常量表达式都不能具有相同的值。
所以没有人可以“解释执行”:没有执行。
您将收到“重复案例”错误。
根据您的评论,这是您观察到的问题。
解释是编译器在编译时5+5
评估10
的,这意味着您有两个具有相同值的 case 分支。这是不允许的(代码应该采用哪一个?)
switch 块中的每个 case 语句必须是唯一的。case 10
并且case 5 + 5
是同一件事,因此您的代码将无法编译。