Java会执行两个TRUE Switch案例吗?

时间:2013-02-27 15:40:22

标签: java switch-statement

这是我的代码:

int x = 10;
switch(x) {
    case 10:
        System.out.println("10");
        break;
    case 5+5:
        System.out.println("5+5");
        break;
}

在这种情况下,两种情况都是真的,会执行什么?第一种情况,或两者兼而有之?

4 个答案:

答案 0 :(得分:9)

它无效:5 + 5解析为10,你不能有两个具有相同常量的case子句。

答案 1 :(得分:2)

5+5编译为10时,您的代码具有重复条件,这在java switch语句中是非法的。

来自specification

  

没有两个与开关关联的case常量表达式   声明可能具有相同的值。

所以没人能“解释执行”:没有执行。

答案 2 :(得分:1)

您将收到“重复案例”错误。

根据您的评论,这是您观察到的问题。

解释是编译器在编译时将5+5评估为10,这意味着您有两个具有相同值的案例分支。这是不允许的(代码需要哪一个?)

答案 3 :(得分:1)

交换机块中的每个case语句必须是唯一的。 <{1}}和case 10是相同的,因此您的代码将无法编译。

相关问题