Java编程思想(第五章初始化与清理)学习笔记

第五章:初始化与清理

一、用构造器确保初始化
  • 构造器是一种特殊类型的方法,它不返回任何东西(不同于void)。
  • new关键字返回的是对象的引用,但构造器本身无返回值。
二、方法重载
  • 定义:方法名相同,形参(类型,顺序,个数)不同。
  • 方法重载时,有2个细节需要注意:
  1. 常数值当做int传入
  2. 当实参为char类型,而重载方法中没有找到对应char类型的方法,则自动提升至int类型进行传入。
public class Test {
	void f1(byte x) { printnb("f1(byte)"); };
	void f1(char x) { printnb("f1(char)"); };
	void f1(short x) { printnb("f1(short)"); };
	void f1(int x) { printnb("f1(int)"); };
	void f1(float x) { printnb("f1(float)"); };
	void f1(double x) { printnb("f1(double)"); };

	void f2(byte x) { printnb("f2(byte)"); };
	void f2(short x) { printnb("f2(short)"); };
	void f2(int x) { printnb("f2(int)"); };
	void f2(float x) { printnb("f2(float)"); };
	void f2(double x) { printnb("f2(double)"); };

	void testConstVal(){
		printnb("5: ");
		f1(5); // 结果是 5: f1(int)
	}

	void testChar(){
		char x = 'x';
		printnb("char: ");
		f2(x); // 结果是 char:f2(int)
	}
}
三、清理:终结处理与垃圾回收
  • 对象可能不被垃圾回收
  • 垃圾回收不等于“析构”
  • 垃圾回收与内存有关(为了回收程序不再使用的内存)
  • 注意:通过“本地方法”分配的存储空间,必须使用free()函数进行释放,这也是造成内存泄露的原因之一。我们可以通过finalize()去调用free(),通常我们的做法是验证对象的终结条件。
四、类的初始化顺序
  1. 首次创建类(构造器-它属于静态方法,静态方法,静态域)时,Java解释器必须查找类路径,加载.class文件;
  2. 进行静态初始化(只进行一次);
  3. 当使用new创建对象时,会在堆上开辟存储空间;
  4. 将该空间中基本数据类型对应的成员变量置为默认值,引用数据类型的成员变量置为null;
  5. 根据类中成员变量定义的顺序进行初始化;
  6. 执行构造器方法。

你可能感兴趣的:(Java编程思想)