包装类
每个基本数据类型都有对应的包装类,与基本数据类型名字像似。Integer、Long、Float、Double、Short、Byte、Character、Boolean。这八个包装类都有一个公共的父类Number。
包装类由final修饰,不能继承,创建后也不能改变其中的值。
list.add(3);
将会自动转化为
list.add(Integer.valueOf(3));
上面就是基本数据类型自动装箱成包装类。调用的是相应包装类的valueOf方法。
int n = list.get(i);
将会自动转化为
int n = list.get(i).intValue();
当包装类赋值给基本类型时,会自动拆箱,转化为基本数据类型。
Integer n = null;
System.out.println(2 * n);
如果包装类为null,则在自动拆箱的时候,会报空指针异常。
Integer i = 12;
Double d = 0.2;
System.out.println(i + d);
当Integer和Double一起运算的时候,Integer会先自动拆箱后转化为double类型,在自动装箱成Double。
可变参数类型
public void fuction(double...values){}
类似上面的这样,可变参数类型使用三个点,可以接收任意数量的参数。
需注意的是,可变参数需要放在参数列表的最后面。
允许将数组作为最后一个参数传递给可变参数的方法。
枚举类
public enum Size{SMALL,MEDIUM,LARGE,EXTRA_LARGE}
上面是枚举类的一个实例,使用enum关键词定义的类称为枚举类。
枚举类在比较的时候不用使用equals,直接使用==号进行比较。
枚举类可以增加构造器、方法和字段。
public enum Size {
SMALL("S"),MEDIUM("M"),LARGE("L");
private final String abbreviation;
Size(String abbreviation){
this.abbreviation = abbreviation;
}
public String getAbbreviation(){
return abbreviation;
}
}
枚举类的构造器总是私有的,private可以省略。所有的枚举类都是Enum的子类,继承了这个类的许多方法。
每个枚举类都有一个静态的values方法
Size[] values = Size.values();
返回的是包含所有枚举元素的数组。
ordinal方法返回的是枚举类中元素的位置,从0开始计数。