1,可变参数
public static int add(int ... args){//…只能出现在参数列表的最后,前后有无空格都行,创建隐含数组。
intsum=0;
for(int arg:args){//迭代变量必须在()中定义!集合变量可以是数组或者实现了Iterable接口的集合类!
sum += arg;
}
return sum;
}
2,自动装箱与拆箱
基本数据类型的自动装箱、拆箱为打包基本数据类型提供了方便,但提供方便的同时表示隐藏了细节,在能够区分基本数据类型与对象的差别时再使用
boolean、byte、short、char、long、float、double //基本数据类型
Boolean、Byte、Short、Character、Long、Float、Double//对应的打包类型Wrapper Types
Integer i = 4;//将int类型数据4装箱成Integer对象。
Integer -128~127 会缓存和字符串类似
享元模式 flyweight很多个小的对象,有很多属性相同,变成一个对象,相同的属性内部状态,不同的属性变成方法的参数,称为外部状态。
3,枚举
方法在元素列表之后,构造方法必须是私有的
如果有抽象方法,每个枚举成员都必须实现抽象方法。
如果枚举只有一个成员,就可以作为一种单例的实现方式。
public enum TrafficLamp{
GREEN {
@Override
public TrafficLamp nextLamp() {
return RED;
}
},RED {
@Override
public TrafficLamp nextLamp() {
return YELLOW;
}
},YELLOW {
@Override
public TrafficLamp nextLamp() {
return GREEN;
}
};
public abstract TrafficLamp nextLamp();//抽象方法,每个枚举成员都必须实现
}