您的位置:首页 > 编程语言 > Java开发

java中,switch语句的陷阱

2017-06-16 09:23 190 查看
Java中,switch语句的陷阱

switch中的default,一般用在最后,表示非以上的任何情况下而发生的情况,

我们一般习惯在他的后面加上个break。但是,如果default不是在最后,

而是在前面或中间会发生什么情况呢:

先看看default在句首的情况:

int i = 2;

switch (i) {

  default:

    System.out.println("default");

  case 0:

    System.out.println("0");

  case 1:

    System.out.println("1");

  case 2:

    System.out.println("2");

    break;

  case 3:

    System.out.println("3");

  case 4:

    System.out.println("4");

    break;

}

他的输出结果是:2! 很明显,不是先执行的default语句!

再看看下面语句:

int i = 8;

switch (i) {

  default:

    System.out.println("default");

  case 0:

    System.out.println("0");

  case 1:

    System.out.println("1");

  case 2:

    System.out.println("2");

    break;

  case 3:

    System.out.println("3");

  case 4:

    System.out.println("4");

    break;

}

他的输出结果是:

default

0

1

2

出人意料!!从default开始向后执行!

再看看default在句中的情况:

int i = 2;

switch (i) {

  case 0:

    System.out.println("0");

  case 1:

    System.out.println("1");

    break;

  default:

    System.out.println("default");

  case 2:

    System.out.println("2");

    break;

  case 3:

    System.out.println("3");

  case 4:

    System.out.println("4");

    break;

}

结果是2!显然还是没执行default!

int i = 8;

switch (i) {

  case 0:

    System.out.println("0");

  case 1:

    System.out.println("1");

    break;

  default:

    System.out.println("default");

  case 2:

    System.out.println("2");

    break;

  case 3:

    System.out.println("3");

  case 4:

    System.out.println("4");

    break;

}

结果:

default

2

显然是从default开始向后执行的!

从上面可以看出:

switch的执行是按照从小到大的顺序执行的,最后执行default语句,

如果default后面带有break,那么程序就会正常跳出switch,否则,

程序会继续向后执行switch语句!也就是说,不管default放在什么

位置,它总是在最后一个处理,然后继续向下处理!

所以,最后的处理办法,避免出现以外结果的最好办法就是每一个case

以及default语句都要加一个break!

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: