0
switch(2){
    default : System.out.println("I am Default block");
    case 1 : System.out.println("in 1");
    case 2 : System.out.println("in 2");
}

输出:in 2 and if

switch(2){

case 1 : System.out.println("in 1");
case 2 : System.out.println("in 2");

default : System.out.println("I am Default block");

}

输出是:在 2 我是默认块。

默认语句的定位是否表现不同?

4

2 回答 2

1

这不是默认块的位置,而是break语句的使用(或在您的情况下不使用)。

匹配案例后,默认行为是代码级联其余案例。

要实现您想要的行为,请尝试

switch (2)
{
    case 1: 
        System.out.println("in 1"); 
        break;
    case 2: 
        System.out.println("in 2"); 
        break;
    default: 
        System.out.println("I am Default block"); 
        break;
}
于 2013-01-13T17:23:28.060 回答
0

Kathy Siera SCJP 的书确实提到了默认立场:很重要,如果出现在案例陈述之间,它遵循失败。但实际上它并没有遵循。

    int a = 10;

    switch (a) 
    {
    case 5:
        System.out.println("Its 5");
    default:
        System.out.println("Its default");
    case 10:
        System.out.println("Its 10");
    case 20:
        System.out.println("Its 20");
    }

输出:

它的 10

它的 20

于 2015-01-18T19:12:17.047 回答