静态导入StaticImport
import static java.lang.Math.max;//导入Math类的max静态方法
import static java.lang.Math.*;//导入Math类的所有静态方法
可变参数VariableParameter
overload vs override
overload 是指方法名称相同,参数类型不同(参数个数/形式参数类型)返回值类型可以相同也可以不同
System.out.println();
override是指子类中相同方法名称,相同参数类型,修饰符只能越开放,不能越封闭(否则就是两个方法)
public——protected——default/package——private
静态方法因为是伴随类的所以,所以只能被遮蔽,不会被改写(可以使用强迫类型转换的方式来调用,最好使用类名调用的方式,免得混淆)
Method(int x,int…args)
int x这个参数可以省略
加强for循环
for([修饰符]类型 元素变量:集合名)
for(int arg:args)
{sum+=args;}
自动装箱拆箱享元模式
Integer iobj =3;//装箱 -128~127
区别new String(”xxx”)/String str=”xxx”
Integer.valueOf(3);//把基本类型封装成对象类型
System.out.println(iobj+1);//拆箱
享元模式:很多很小的对象,他们有很多相同的东西,我们可以把相同的部分(对象的内部状态)变成一个对象,把那些不同的部分(对象的外部对象)当成外部的参数传给这个对象
枚举普通类模拟
EnumTest 类命名
把构造方法设成私有的(避免外部生成对象)
在类中设一些public的static常量供外部调用
枚举元素是一个类的实例对象
采用抽象方法定义nextDay就是将大量的ifelse语句转移成了一个个独立的类
如果想在一个类中编写完各个枚举和测试调用类,那么可以将枚举类定义成调用类的内部类
枚举类的变量只能赋值枚举中的元素
WeekDay weekday = WeekDay.SUN;
枚举类的变量的方法:name/ordinal/getclass
把一个String变成对应的枚举元素
枚举类的静态方法:valueOf(“xxx”)/values().length
实现带有构造方法的枚举
枚举的元素列表必须放在枚举类所有成分之前
枚举类的构造方法only private is permitted(私有的避免外部随意生成对象)
有多个构造方法时,枚举元素的参数类型决定其调用的构造方法
枚举元素 SUN 相当于普通类public final static voidWeekDay SUN = new WeekDay();
内部类是可以使用四个访问修饰符的,外部类两个public 和 默认
TrafficLamp(交通灯)
枚举类内部定义抽象方法public abstract TrafficLamp nextLamp()
RED(30){ public TrafficLampnextLamp(){return GREEN;}} 表示TrafficLamp的实现类
private TrafficLamp(int time){this.time=time;}
new Date(300){}调用父类有参的构造函数
枚举如果只有一个成员,就可以作为一种单例的实现方式