java高级特性之--自动拆装箱和枚举

来源:互联网 发布:access sql limit 编辑:程序博客网 时间:2024/05/20 00:14

自动装箱和拆箱

  • 有时需要将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语句中使用