这是我的代码:
int x = 10;
switch(x) {
case 10:
System.out.println("10");
break;
case 5+5:
System.out.println("5+5");
break;
}
在这种情况下,两种情况都是真的,会执行什么?第一种情况,或两者兼而有之?
答案 0 :(得分:9)
它无效:5 + 5解析为10,你不能有两个具有相同常量的case
子句。
答案 1 :(得分:2)
当5+5
编译为10
时,您的代码具有重复条件,这在java switch语句中是非法的。
没有两个与开关关联的case常量表达式 声明可能具有相同的值。
所以没人能“解释执行”:没有执行。
答案 2 :(得分:1)
您将收到“重复案例”错误。
根据您的评论,这是您观察到的问题。
解释是编译器在编译时将5+5
评估为10
,这意味着您有两个具有相同值的案例分支。这是不允许的(代码需要哪一个?)
答案 3 :(得分:1)
交换机块中的每个case语句必须是唯一的。 <{1}}和case 10
是相同的,因此您的代码将无法编译。