1、简述
初始化和清理这两个概念是涉及到我们程序的安全问题,在我们对象创建过程中是避免不了的,初始化——使用——销毁、清理。c++为我们引入了构造器的概念,帮助我们对对象进行初始化,其目的也很 明显就是告诉我们如何创建一个对象,以什么方式创建对象。Java同时提供了“垃圾回收器”,来帮助我们对对象进行清理。让我们开发更加方便。
2、构造器确保初始化
(1)假设我们每次创建对象都需要调用一个initialize()方法,通过构造器我们Java设计者就能够知道我们用户在有能力操作对象之前去对对象进行初始化工作。
(2)构造器的如何调用问题:我们的可能存在方法重名的问题,那么我们该如何区分,Java采用与类名同名的方式去区分,另外本身调用构造器也应该是编译器的责任。
本身创建对象与初始化对象看似是两个独立的组成部分,但是在Java中是不可分离的,因为我们不能明确找到这个initialize()方法,并手动调用。
(3)Java会添加默认构造器,如果自己创建构造器那么Java则不会再给添加默认的无参构造器了。
3、方法的重载
对象的创建就是给存储空间取名字,那么方法就类似是这个对象的动作。
(1)为啥需要方法的重载?
追溯到构造器上,我们创建对象的方式有多种,但是我们也可以看出我们的构造器名称已经被限定死了——类名,所以我们需要对构造器进行重载。
(2)区分方法重载
既然方法名称相同那么,区分方法重载的重任就交由独一无二的参数列表来完成。
这里有趣的例子:基本类型的重载

class Test{
	public void testOverLoad(byte i){
	System.print.out("重载byte "+i)
	}
	public void testOverLoad(short i){
	System.print.out("重载short"+i)
	}
	public void testOverLoad(int i){
	System.print.out("重载int"+i)
	}
	public void testOverLoad(long i){
	System.print.out("重载long"+i)
	}
	public void testOverLoad(char i){
	System.print.out("重载"+i)
	}
}

我们当调用时正常 Test test=new Test() t.testOverLoad(5),此时我们的结果会是怎样?
答案肯定是入参int的被调用,这行例子不太好,你可以重载一组不同类型数据,尝试调用,
我这里简单说下:当我们传递的参数的范围较小时会自动升为较大类型,但是char类型比较特殊,当没有与之匹配的类型时,他会自动升为int类型。当实际参数较大时,我们就需要对其进行强制转换,否则编译器会直接报错。
不可采用返回值进行区分:我们调用方法的目的是实现其调用的效果,而并不关心其返回值的问题,因此当我们通过调用t.f()(一个有返回值,一个没有)方法时编译器并没有办法区分。
4、this关键字
this关键字:在方法内部使用,其实我们可以理解为我们的方法调用时,隐式的将我们对象的引用一并传入了,而this就是指当前对象的引用。
this附加参数列表的形式在构造器中的用法,其实就是构造器调用构造器,
注意:
1、this()在一个构造器中只能调用一个构造器。
2、构造器必须位于最前面,否则编译器会报错
3、除构造器意外,其他地方不能调用构造器。
5、终结处理和垃圾回收