接下来将从几个小节做个学习记录:
1、构造器初始化。
2、方法重载
3、this关键字
4、static关键字
5、清理
6、成员初始化
7、数据初始化
8、枚举类型
一、构造器初始化
- Java对象有默认构造器,是以类名命名的无参构造器。
- 显示指定构造器后,Java对象默认执定的无参数构造器将不存在。如果需要使用无参构造器,需要指定。
- 初始化对象时,先执行父类构造器和子类构造器。
1.1 无参数构造器(默认构造器):
public class Constructor {
public void print() {
System.out.println("print constructor method!");
}
public static void main(String[] args) {
Constructor constructor = new Constructor();
constructor.print();
}
}
输出:
print constructor method!
new对象创建后,默认使用午无参数构造器
1.2 无参数构造器
显示指定无参数构造器的代码 如下:
public class NoArgsConstructor {
public NoArgsConstructor() {
System.out.println("NoArgsConstructor object createed");
}
public void print() {
System.out.println("print constructor method!");
}
public static void main(String[] args) {
NoArgsConstructor constructor = new NoArgsConstructor();
constructor.print();
}
}
输出结果如下:
NoArgsConstructor object createed
print constructor method!
由上面输出结果可知,new对象时,调用显示指定的无参数构造器。
二、方法重载
方法重载是实现多态的一种手段,区分函数重载主要按照参数不同进行区分,主要通过一下进行重载:
- 参数类型
- 参数顺序
- 参数个数
public class ParamsOverloading {
public void print(int count) {
System.out.println("print int count:" + count);
}
public void print(String count) {
System.out.println("print string count:" + count);
}
public void print(int count, String string) {
System.out.println("print count:" + count + ", string:" + string);
}
public static void main(String[] args) {
ParamsOverloading paramsOverloading = new ParamsOverloading();
paramsOverloading.print(10);
paramsOverloading.print("8888");
paramsOverloading.print(100,"9999");
}
}
输出结果如下:
print int count:10
print string count:8888
print count:100, string:9999
由上面输出结果可知,使用 不同的参数类型调用不同的print方法。注意一点,不能用返回值作为参数重载的判断条件,也不建议将参数类型交换位置作为重载,不利于后期的维护。
包装类与基本类型的重载误区,包装类和基本类型可以作为重载,但是不建议那么使用。
三 、this关键字
- 每个方法都默认传入this对象。
- 调用本类成员不要添加this,bad smell。
- 可以返回this继续操作。
- 构造器使用this,只能在第一行,用一次。
四 、static关键字
- static方法不能调用非静态方法
- 非静态方法可以调用静态方法
- 不要用太多的静态方法
五、清理
- finalize
- 垃圾回收器
- 垃圾回收器释放new分配的内存
六、成员初始化
- 静态代码块 、静态变量按顺序执行
- 非静态代码块、成员变量按顺序执行
- 构造函数,先执行父类,再执行子类
七、数据初始化
- 基本类型
- 引用类型
- 初始化方式
- 可变参数列表