Java高级特性之自动装箱和拆箱
有时需要将int这样的基本类型转换为引用类型对象
基本数据(Primitive)类型的自动装箱、拆箱是J2SE 5.0提供的新功能,为打包基本数据类型提供了方便,但提供方便的同时隐藏了细节,建议在能够区分基本数据类型与引用类型的差别时再使用
基本类型int、boolean、byte、short、char、long、float、double对应的包装引用类型分别是Integer、Boolean、Byte、Short、Character、Long、Float、Double
Java高级特性之枚举类型
枚举类定义语法:public enum Color{RED,BLUE,BLACK}
枚举值都是public static final类型的,也就是常量,因此枚举类中的枚举值应全部大写
枚举类型是class,在枚举类型中有构造器,方法和字段,但枚举的构造器有很大的不同:
构造器只是在构造枚举值的时候被调用
构造器私有,不允许有public构造器
枚举可以在switch语句中使用
枚举是一个类,只是默认继承自java.lang.Enum<E>
demo:
public class AutoBoxDemo { public static void main(String[]args) { int i=10; double d=12.5; Integer num1=i;//自动装箱 Double num2=d;//自动装箱 System.out.println(num1); System.out.println(num2); int j=num1+5;//自动拆箱 double d2=num2+5.0;//自动拆箱 System.out.println(j); System.out.println(d2); Object o=i; Integer b=(Integer)o; System.out.println(b); System.out.println("____________________"); enumTest(); } //枚举测试 public static void enumTest() { System.out.println(Color.BLUE); Color [] colors=Color.values(); for(Color c:colors){ System.out.print(c); System.out.print(" "); } System.out.println(); Person [] persons=Person.values(); for(Person p:persons){ System.out.print(p); System.out.print(" "); } System.out.println(); Person p =Person.P2; switch(p) { case P1: System.out.println("p1:"+p); break; case P2: System.out.println("p2:"+p); break; case P3: System.out.println("p3:"+p); break; } } } //当JVM去加载使用枚举类时,会预先创建多个枚举类型的对象 //每个值构造一次,类似 public static final Color RED=new Color(); enum Color{ RED,BLUE,YELLOW;//枚举类型值必须作为第一条语句出现 private Color(){//构造方法只能私有,有多少个枚举值,构造多少次 System.out.println("Color()"); } } //枚举类可以扩展自己的属性、可以重写toString()方法等等,这些用法与普通类一样 enum Person{ P1("张三",13),P2("李四",20),P3("王五",18); private String name; private int age; private Person(String name,int age){ this.name=name; this.age=age; } public String toString(){ return name+","+age; } }
效果: