体验J2SE 1.5新特性之装箱和拆箱
http://tech.ddvip.com 2006年11月27日 社区交流
本文详细介绍体验J2SE 1.5新特性之装箱和拆箱
清单18:在switch语句里使用包裹类对象
Character c = new Character('a');
switch (c) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
System.out.println("A Vowel in English");
break;
default:
System.out.println("Not A Vowel in English");
break;
}把Boolean对象在if/for/while/do-while语句中作为条件表达式使用时。
清单19:把Boolean对象作为条件表达式
Boolean bool = new Boolean(Math.random() > 0.5);
if (bool) {
System.out.println("Aye!");
} else {
System.out.println("Nay!");
}6. Auto-Unboxing的局限
Auto-Unboxing的机制则有这样一个局限——只能把包裹类对象往它们对应的基本类型(以及容纳范围更广的类型)上转化。
类似这样的代码是不能工作的,尽管32并未超出byte所能表示的范围:
清单20:不能同时进行Auto-Unboxing和强制向下转型
Integer i = new Integer(32);
System.out.println((byte) i);/* 编译时出错 */这是因为编译器并不认可同时进行Auto-Unboxing和强制向下转型的操作,所以这个转化无法进行。如果一定要进行这种操作,需要手工补充一次转型:
清单21:需要先作Unboxing,再强制向下转型
Integer i = new Integer(32);
System.out.println((byte)(int) i);不过同时进行Auto-Unboxing和强制向上转型的操作是没有问题的,所以下面的代码工作得很正常:
责编:豆豆技术应用
正在加载评论...