Java--switch使用易错点小结

         这次是把java中常用的一个控制语句switch使用时出现的错误做个小结。

  一  defult的用法

	/*************************************************
	 * defult是说当其他项匹配不到的时候,就会默认选择这一项
	 * 而不是说会首先或者第一个选择它对应的项
	 *************************************************/
	public static void defult_test(char a){
		switch (a) {
		case 'A':
			System.out.println("我是A");
			break;
		case 'B':
			System.out.println("我是B");
			break;
		case 'C':
			System.out.println("我是C");
			break;	
		default:
			System.out.println("我什么也不是");
			break;
		}
	}
调用:
		defult_test('A');
		System.out.println("-----------------------");
		defult_test('D');

输出结果:

我是A
-----------------------
我什么也不是


这样我们就明白了,原来和defult的位置无关的。

 

二  break容易漏

   这个错误应当是刚学习时候容易反的错误,也是我们做练习题时容易考到的知识。如果有case项没有加break那么,当如果程序匹配到了这个case项,运行完这段case的内容后,仍然会向下执行,直到遇到下一个break或者是switch程序的结尾。但是如果这段程序有defult的话,是比较例外的情况,只要有case匹配到,defult就不会执行。

	/***********************************************
	 * break漏写也是大家容易犯的错误,如果一个匹配项执行
	 * 结束之后没有break,程序就会一直执行到下一个break
	 * 或者是到这段程序的结束
	 ***********************************************/
	public static void break_test(char a){
		switch (a) {
		case 'A':
			System.out.println("我是A");
//			break;
		case 'B':
			System.out.println("我是B");
			break;
		case 'C':
			System.out.println("我是C");
			break;	
		default:
			System.out.println("我什么也不是");
//			break;
		case 'D':
		    System.out.println("我是D");
		}
	}
调用:
		break_test('A');
		System.out.println("-----------------------");
		break_test('D');

输出结果:

我是A
我是B
-----------------------
我是D


从这里我们看到 'A’后面的break被注释掉了,所以当匹配到A时候会,执行完这段case的代码块后,仍然执行B得了,知道B的break才结束。

而当我们给D参数的时候,尽管他没有break但是仍然不会去匹配defult。

三 switch(key)  key的类型

     byte,int,short,char是可以作为key表达式的类型的,jdk1.5 以后enum类型也是可以作为key表达式的类型的。而long,double,float,还有其他类是不可以作为key表达式的类型的。我们知道string从前是也是不行的,可是jdk1.7之后就开始支持string的表达式了。

  

也就是说jdk1.7之后我们也是用string作为case判断的表达式了,这一点也在jdk1.7新特性中。


本文出自 orangleliu笔记本 博客,请务必保留此出处http://blog.csdn.net/orangleliu/article/details/38309365

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值