自动装箱和拆箱
- 有时需要将int这样的基本类型转换为引用类型对象
- 基本数据类型的自动装箱、拆箱是J2SE 5.0提供的新功能,为打包基本数据类型提供了方便,但提供方便的同时隐藏了细节,建议在能够区分基本数据类型和引用数据类型的差别时在使用。
一个自动装箱的例子:
Integer i = 10; //相当于 Integer i = new Integer(10);
- 进行编译时,编译器是根据语句上下文判断是否进行自动装箱动作。在上例中变量i引用的是Integer类的实例。
- 同样的动作适合用于boolean ,byte,short,char,long,float,double,等基本数据类型,分别使用对应的包装类型(Wrapper Types)Boolean,Byte,Short,Character,Long,Float,Double
J2SE 5.0 中也可自动拆箱(unboxing),也就是对象中的基本数据类型信息自动取出
例如:
Integer i = 10; int n = i;//相当于 int i= m.intValue(); /* i变量在自动装箱为Integer的实例后,如果被赋值给一个int类型的变量n,则自动转换为int类型再赋值。 */ //在运算时,也可进行拆箱与装箱,如: Integer m = 10; System.out.println(m+10); System.out.prinltn(m++);
枚举类型
public enum Color{
RED,BLUE,BLACK,YELLOW,GREEN
}
//enum 很像特殊的class,实际上enum声明定义类型就是一个类
//这些类都是类库中Enum类的子类(java.lang.Enum<E>),它们继承了
//Enum中许多有用的方法
- 枚举值都是public static final 的,也就是常量,因此枚举类中的枚举值应全部大写
- 枚举类型都是class,在枚举类型中有构造器,方法和字段。但枚举的构造器有很大不同:
- 构造器只是在构造枚举值时被调用
- 构造器私有,不允许有public 构造器
- 枚举可以在switch语句中使用