-4

这是我的代码:

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

在这种情况下,两种情况都成立,会执行什么?第一种情况,还是两者兼而有之?

4

4 回答 4

9

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

于 2013-02-27T15:41:26.003 回答
2

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

规范

与 switch 语句关联的任何两个 case 常量表达式都不能具有相同的值。

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

于 2013-02-27T15:41:36.070 回答
1

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

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

解释是编译器在编译时5+5评估10的,这意味着您有两个具有相同值的 case 分支。这是不允许的(代码应该采用哪一个?)

于 2013-02-27T15:41:35.153 回答
1

switch 块中的每个 case 语句必须是唯一的。case 10并且case 5 + 5是同一件事,因此您的代码将无法编译。

于 2013-02-27T15:41:48.667 回答