1.自动装箱和解箱(自动打包和拆包)
装箱就是将8中节本数据类型自动转换为对象,这种技术是在5.0之前是没有的,5.0之前都是手工装箱。解箱就是反过来。
byte->Byte int->Integer short->Short char->Character long->Long float->Float double->Double
需要注意的是自动装箱有一个范围,比如byte、int、char,如果它们的值介于-128到127之间,可以进行自动装箱,否则会出现错误的。
2.可变长参数
在5.0以前一个方法的参数都是固定的,而5.0及以后的版本提供了一个方法参数可变长的技术。但是需要注意的是一个方法的参数列表最多有一个可变长的参数,而
且这个可变长参数必须是最后一个参数。public void method(string... args)
3.静态导入
从5.0开始,import不仅可以导入类,也提供了导入静态方法和属性的功能。import static ......
需要注意的是 import static 只能导入静态的方法或属性;不能只导入类或非静态的方法。
导入静态属性 import static java.lang.System.out;
导入静态方法 import static java.lang.Math.random;
如:import static java.lang.System.*; out.println(“a”); //等于System.out.println("a");
import static java.lang.System.gc; 则可以直接在程序中用 gc(); //等于System.gc();
4.for each循环 for(:) 遍历
...................
5.枚举(enum)
枚举是一个具有特定值的类型,而我们用的时候只能取其中的一个值。
在枚举中可以定义构造器,但是这个构造器是私用的,默认下枚举的构造器是私有的,这个构造器只在构造枚举常量的时候调用。
enum Season{
SPRING("春"), SUMMER("夏"), AUTUMN("秋"), WINTER("冬");
String name;//默认为private
Season(String name){ this.name=name; }//默认为private
public String getName(){return this.name;}
}
枚举中可以定义抽象方法,但是这个抽象方法必须在自己的枚举值中实现,因为枚举默认是final类型的,不能被继承。
enum Teacher{
LIUCY("liuchunyang"){void teach(){out.println(name+" teach UC");}},
CHENZQ("chenzongquan"){void teach(){out.println(name+" teach C++");}},
HAIGE("wanghaige"){void teach(){out.println(name+" teach OOAD");}};
String name;
TarenaTeacher(String name){this.name=name;}
abstract void teach();//定义抽象方法
}
所有的枚举类型都是Enum的子类。
6.泛型