Head First Java笔记集:构造器与垃圾收集器

学长推荐了印象笔记,今天才开始用,边看书边记录了点知识点,感觉挺好的。

* 每个父类的构造函数都会在子类的创建时期执行

* 构造函数在执行时,第一件事是去执行它的父类构造函数,这会一直连锁反应到Object这个类为止 ->构造函数链(Constructor Chaining)
*
* 执行new操作时,对应构造函数进入堆栈最上方的堆栈块,但是会首先执行它的父类构造函数,所以父类构造函数将进入栈顶,如果父类构造函数还有他自己的父类构造函数,则再将该构造函数引入栈顶,一直一直连锁反应到Object( ),此时Object( )是栈顶第一个函数,它最先执行。执行完毕后,它的堆栈块被弹出,接着继续执行它的子类的构造函数,以此类推。

* 使用super( )调用父类构造函数,但是如果你没有用super( )调用,编译器会帮我们加上super( )的调用
* 对super( )的调用必须是构造函数的第一个语句(因为父类的构造函数必须先调用)

* 如果父类的构造函数有参数,可以调用super( )函数来传入参数。p255

* this( )可以用来从某个构造函数调用同一个类的另外一个构造函数

* this( )只能用在构造函数中,且它必须是第一行语句
* 每个构造函数可以选择调用super( )或this( ),但不能同时调用

* 局部变量只会存活在声明该变量的方法中,只能在它的方法执行中的时候才能被使用;当该方法结束被弹出后,该局部变量失效。
* 实例变量的寿命与对象相同。如果对象活着,实例变量也会是活的
* 如果对对象的唯一引用死了,对象就会从堆中被踢开。

* 引用变量会跟堆栈块一起解散
* 被踢开的对象也就正式声明出局

* 三种释放对象引用的方法

* 引用,永久性的离开它的范围: void go( ) { Life z = new Life( );} //z会在方法结束时消失
* 引用被赋值到其他的对象上 : Life z = new Life( ); z = new Life( ); //第一个对象会在z被赋值到别处时挂掉
* 直接将引用设定为null: Life z = new Life( ); z = null; //第一个对象会在z被赋值为null时被击毙

* 实例变量->对象的状态->和对象一起生存在堆上 局部变量->对象的行为->生存在堆栈上

以上。

《Head First Java笔记集:构造器与垃圾收集器》上有1条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据