关于java 中 switch 语句的执行顺序

首先来一个正常的demo


		int i = 2;
		switch (i) {
		case 1:
			System.out.println("1");
			break;
		case 2:
			System.out.println("2");
			break;
		case 3:
			System.out.println("3");
			break;
		case 4:
			System.out.println("4");
			break;
		default:
			System.out.println("default");
			break;
		}

学过基础的都知道这样输出 是2,那么是执行顺序是怎样的呢?是往下执行再执行default 吗?


再看看下面这个

		int i = 5;
		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 先在执行case


再继续看

		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 = 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 = 5;
		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。

猜你喜欢

转载自blog.csdn.net/chenshuzhuo/article/details/82743847