在
Java和
Eclipse(Kempler)的最新稳定版本中,输入以下代码并执行它,假设包和类名存在:
package some_package;
public class what_the_heck {
public static void main(String[] args) {
int p = 2;
int x = 1;
switch(p){
case (1):
x--;
case (2):
x = 2;
case (3):
x = 3;
default:
x++;
}
System.out.println(x);
}
}
这打印值4.最初,我认为它应该打印2因为我认为即使没有break语句,每段代码仍然保存在case语句中.现在我认为问题在于如何编译.例如,我目前的看法是内部布尔值跟踪case语句是否等于该值.如果是,那么布尔值为true,并且所有case语句都将被视为true,直到找到中断为止.这是有道理的,但我仍然想知道这背后是否有其他原因,或者我的假设是完全错误的.