<JAVA编程思想第四版>——初始化和清除

4.1 用构造器初始化

  构造器名称与类名相同,可以使用自变量,无返回值(属于特殊的方法类型)

  

  如果不明确指定类的构造器函数,那么编译器会生成默认构造器。

class Inspur {
}
public class TestConstructor {

	public static void main(String[] args) {
		new Inspur();//invoke default constructor
	}
}

  但一旦用户指定一个构造器,编译器就不会生成默认构造器(无参构造器)。

  

4.2 方法重载

  方法重载是构造器必需的,但它也可以应用于其它任何方法。

  4.2.1 区分过载方法

  过载方法的名字相同,那如何区分?答:根据自变量类型列表(类型 + 顺序)

  类中的方法(包括静态方法)不能有相同的自变量类型列表。

  4.2.2 主类型过载

  传入常数5,过载方法中如果有int类型,就会匹配Int类型。如果没有Int类型,则按照最最小离int最小的类型匹配(long,float,或者double)

  传入char类型,过载方法中有char类型,就会匹配char类型。没有则首先匹配Int类型,没有Int则匹配离Int最小的类型(long,float,double)

  byte类型(byte,short,int,long,float,double)

  short类型(short,int,long,float,double)

  int类型(int,long,float,double)

  long类型(long,float,double)

  float类型(float,double)

  以上的匹配是自动的;如果传入int类型,而重载函数的自变量类型都“小于”int,则不会自动匹配,编译错误。需要手动转换成对应类型。

  “缩小转换”必须手动指定,编译器无法自动完成。因为转型过程中会造成数据精度丢失。

  4.2.3 返回值过载

  返回值过载不可以。

  4.2.4 默认构造器

  定义构造器的时候,最好同时构造无参构造器。因为如果自己定义一个有参构造器,编译器就不会给我们创建一个默认无参构造器。

  4.2.5 this 关键字

  this关键字(注意只能够在方法内部使用)可为已调用了其方法的的那个对象生成相应的句柄。

  类中方法A内部调用方法B,不必指定this关键字。此时this句柄会自动应用到其它方法

  this关键字只能用于特殊的类,需要明确使用当前对象的句柄。

  1. 在构造器中调用构造器

  

  2. static关键词的含义

  static方法没有this,不能在static方法内部调用非static方法,但是可以在非static方法内部调用static方法。

  特殊的,我们可以将对象句柄传递到static方法内部,然后通过句柄调用非static方法,并访问非static字段。

4.3 清除、收尾和垃圾回收

  JAVA使用垃圾收集器回收不再使用的内存,但只是回收使用new分配的内存。如果一个对象包含有“特殊”内存,没有使用new,则垃圾收集无法回收。

  finalize()方法,垃圾收集器准备释放对象占用的内存时,会首先调用finalize()方法,进行清除或清扫工作。

  4.3.1 finalize()用处

  一般是通过固有方法分配的内存。finalize()中调用固有方法释放内存。所以finalize()一般用不到,只有极其特殊的场合使用。

  4.3.2 必须执行清除

  java中不允许创建本地对象,必须使用new    

posted @ 2017-05-03 11:43  永不放弃的小强  阅读(187)  评论(0编辑  收藏  举报