java switch/case你不知道的事情

日常小记

switch/case大家都经常用,可能东西比较简单,以前从没有留意过,或者课本知识读的少忘得快,对switch/case执行流程了解不够深入,今天专门测试了下,得出如下结论:

/* 1.switch/case执行流程是:
 * a.遇到匹配的case,并且该case有break则流程执行完毕;
* b.遇到匹配的case,如果该case没有break则流程继续执行,直到遇到break或者流程的结束;
* c.如果没有匹配的case,则执行default;没有default就什么也不做。
* 2.如果没有匹配的case,肯定会执行default;
* 如果有匹配的case,这时我们把default当成一个case来对待。

*/

看看测试的代码:

package zzone.example;

public class SwitchCase {
	public static void Normal(){
		int i = 10;
		switch (i) {
		case 10:
			System.out.println(10);
			break;
		case 20:
			System.out.println(20);
			break;
		default:
			System.out.println("default");
			break;
		}
		System.out.println("----->10");
	}
	public static void Special(){
		int i = 10;
		switch (i) {
		default:
			System.out.println("default");
			//break;
		case 10:
			System.out.println(10);
		case 20:
			System.out.println(20);
			break;
		}
		System.out.println("----->10 20");
	}
	public static void Special1(){
		int i = 10;
		switch (i) {
		default:
			System.out.println("default");
			//break;
		case 10:
			System.out.println(10);
		case 20:
			System.out.println(20);
			//break;
		}
		System.out.println("----->10 20");
	}
	public static void Special2(){
		int i = 10;
		switch (i) {
		case 10:
			System.out.println(10);
		case 20:
			System.out.println(20);
		default:
			System.out.println("default");
			//break;	
		}
		System.out.println("----->10 20 default");
	}
	public static void Special3(){
		int i = 10;
		switch (i) {
		case 10:
			System.out.println(10);
		case 20:
			System.out.println(20);
			break;
		default:
			System.out.println("default");
			//break;	
		}
		System.out.println("----->10 20(因为有break,没执行default)");
	}
	public static void Special4(){
		int i = 10;
		switch (i) {
		case 10:
			System.out.println(10);
		default:
			System.out.println("default");
			//break;	
		case 20:
			System.out.println(20);
			break;
		
		}
		System.out.println("----->10 default 20(default当成case看待)");
	}
	public static void Special5(){
		int i = 10;
		switch (i) {
		case 0:
			System.out.println(0);
		case 10:
			System.out.println(10);
		case 20:
			System.out.println(20);
		default:
			System.out.println("default");
			//break;	
		}
		System.out.println("----->10 20 default");
	}
	public static void Special6(){
		int i = 1;
		switch (i) {
		case 0:
			System.out.println(0);
		case 10:
			System.out.println(10);
		case 20:
			System.out.println(20);
		default:
			System.out.println("default");
		}
		System.out.println("----->default");
	}
	public static void Special7(){
		int i = 100;
		switch (i) {
		case 0:
			System.out.println(0);
		case 10:
			System.out.println(10);
			break;
		case 20:
			System.out.println(20);
		default:
			System.out.println("default");
		}
		System.out.println("----->default");
	}
	public static void Special8(){
		int i = 100;
		switch (i) {
		case 0:
			System.out.println(0);
		case 10:
			System.out.println(10);
		case 20:
			System.out.println(20);
		}
		System.out.println("----->空");
	}
	public static void main(String[] args) {
		/* 1.switch/case执行流程是:
		 * 		a.遇到匹配的case,并且该case有break则流程执行完毕;
		 * 		b.遇到匹配的case,如果该case没有break则流程继续执行(排除default的),直到遇到break或者流程的结束;
		 * 		c.如果没有匹配的case,则执行default;没有default就什么也不做。
		 * 2.如果没有匹配的case,肯定会执行default;
		 * 如果有匹配的case,这时我们把default当成一个case来对待。
		 * 
		 */
		System.out.println("-------Normal-----------");
		Normal();
		System.out.println("-------0-----------");
		Special();
		System.out.println("-------1-----------");
		Special1();
		System.out.println("-------2-----------");
		Special2();
		System.out.println("-------3-----------");
		Special3();
		System.out.println("-------4-----------");
		Special4();
		System.out.println("-------5-----------");
		Special5();
		System.out.println("-------6-----------");
		Special6();
		System.out.println("-------7-----------");
		Special7();
		System.out.println("-------8-----------");
		Special8();
		
	}
}

运行结果:

-------Normal-----------
10
----->10
-------0-----------
10
20
----->10 20
-------1-----------
10
20
----->10 20
-------2-----------
10
20
default
----->10 20 default
-------3-----------
10
20
----->10 20(因为有break,没执行default)
-------4-----------
10
default
20
----->10 default 20(default当成case看待)
-------5-----------
10
20
default
----->10 20 default
-------6-----------
default
----->default
-------7-----------
default
----->default
-------8-----------
----->空


*********************************************************************************************************************

宁愿做错了而后悔,也不要错过了而后悔!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值