Java SE 7切换语句,何时会执行默认情况?

时间:2014-05-06 23:22:25

标签: java switch-statement

我正在准备OCA Java SE 7示例。关于switch语句的问题: 这是代码:

int a = 5;
switch(a){
    default: //print 0
    case 1: //print 1
    case 5: //print 5
    case 8: //print 8
}

代码的输出是什么? 这是我不明白的事情: 默认通常是最后一个条件。如果默认是第一个条件怎么办? 默认情况会先匹配吗?

更进一步: 如果我更改代码,请使i = 10,这肯定不会与其余3条件匹配,但会匹配默认条件。鉴于没有休息;在我的代码中, 将程序输出:0 1 5 8 ??

更新 我不认为我的问题清楚明了...... 正如所建议的那样,我用代码尝试了它,并且我确实理解了关于坠落的规则。

如果i = 10,结果将是:0 1 5 8。

让我困惑的是: 如果我= 10

当我们输入switch语句时,首先执行哪一行?

默认值://打印0

案例1://打印1

更新更新 感谢你们... 我想我明白了......

默认情况只会在没有匹配时触发。

在这种情况下,执行顺序应该是:

case 1:
case 5:
case 8:
//and no found yet..trigger the default case
// given that my default case is at the top and no break;
//it fall through and print: 0 1 5 8

仅供参考:我知道如何运行代码。而且我并没有期待如此大量的批评,说“自己动手做”,“#34;不要只是阅读而不是练习" ..

无论如何,谢谢。

2 个答案:

答案 0 :(得分:4)

你应该试试看看。但我要指出的一点是,没有break陈述。这意味着它将从最终的任何地方落下。

所以会发生什么,它会评估开关并跳转到适当的情况。从那里它将落空。

答案 1 :(得分:1)

开关只是一种被认为对一般用途安全的特定goto模式。

给出这样的东西:

if (i == 1) goto lbl1;
if (i == 5) goto lbl2;
if (i == 8) goto lbl3;
lbl4: print 0;
Lbl1: print 1;
Lbl2: print 5;
Lbl3: print 8;