交换机中的默认语句位置

时间:2013-01-13 17:19:11

标签: switch-statement

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

输出:2 如果

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 我是默认阻止。

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

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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岁