java编程思想(Think in java)读书笔记 二

四、初始化和清理
1.finalize()方法:一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用其finalize()方法,并且在下一次垃圾
回收动作发生时,才会真正回收对象占用的内存。用finalize方法,可以在垃圾回收时刻做一些清理工作。

finaliz主要作用是为处理或者释放使用非java代码的方式分配的内存。在jvm中有“本地方法”可能是用C或者C++编写的,
C、C++是用malloc函数分配存储空间,用free函数释放内存的。所以finalize方法一般是用来调用本地方法清理内存的。
2.回收器
特点、方式:  自适应的、分代的、停止-复制、标记-清扫

java虚拟机中,内存分配以较大的"块"为单位。
分代:
大致分新生代,老生代,每个块都有相应的代数,如果“块”在某处被引用,其代数会增加,垃圾回收器将对
上次回收动作之后新分配的块进行整理,这种对清理大量短命的临时对象很有帮助
停止-复制:
要求在释放旧有对象之前,必须先把所有存活对象从旧堆复制到新堆,将导致大量的内存复制行为,
而有了“块”之后,垃圾回收器在回收的时候就可以往废弃的“块”里拷贝对象。会重新整理对象,使其保持
紧凑排列。
标记-清理:
从堆栈和静态存储区出发,遍历所有的引用,进而找出所有存活的对象。每当找到一个存活对象,就会
给对象设一个标记,此时不会回收对象。当全部标记工作完成的时候,清理动作开始执行。清理过程中,没有标记
的对象将被释放,标记的存活的对象被复制。所以此时剩下的堆空间是不连续的。
自适应:
java虚拟机会进行监视,如果所有对象都很稳定,垃圾回收器的效率降低的话,就切换到“标记-清扫”
方式;同意java虚拟机会跟踪“标记-清扫”的效果,要是堆空间出现很多碎片,就回切换到“停止-复制“模式。
五、复用类


组合关系、继承关系、代理关系

1.可以为每个类都创建一个main()方法,这种在每个类中都设置一个main方法的技术可以使每个类的单元测试都变得简便易行。
而且在完成单元测试之后,也无需删除main,可以将其留待下次测试。
2.
组合关系:"has-a"关系
继承关系:"is-a"关系
继承技术应该慎用,到底是该用组合还是继承,一个最清晰的判断办法就是问一问自己是否需要从子类向父类
进行向上转型,如果必须向上转型,则继承是必要的,否则,应当好好考虑是否需要继承。
3.final
final修饰引用变量时,指的是所指向的对象不变,即始终指向在那一个内存地址的对象,但是对象本山是可以
被修改的。这一限制同样适用数组,它也是对象。
 4.加载
  类的代码在初次使用时才加载。
  1)通常是指加载发生于创建类的第一个对象之时。
  2)当访问static域和static方法时,也会发生加载。所有的static对象和static代码块都会在加载时
  依程序中的顺序而依次初始化。仅初始化一次。
 
六、多态
1.java中除了static方法和final方法(private类型方法被隐式的指定为final方法)之外,其他所有的方法都是后期绑定。
静态方法是与类,而非与单个的对象相关联的的。编译的时候静态方法与类绑定在一起,属于前期绑定。
2.多态是一项让程序员"将改变的事物与未变的事物分离开来"的重要技术。
3.  
1) 为父类的实例变量分配内存
2) 为子类的实例变量分配内存
3) 为父类的实例变量执行赋值运算(初始化)
4) 执行父类的构造方法
5) 为子类的实例变量执行赋值运算(初始化)
6) 执行子类的构造方法

4.继承和清理。按照与初始化顺序相反的顺序进行。
5.协变返回类型,它表示子类中覆写的方法可以返回父类方法的返回类型的某种子类型。
6.在派生类中,对于基类中的private方法,最好采用不同的名字。

7.Use inheritance(继承) to express differences in behavior(行为),and fields to express variations in state.


"用继承来表达行为间的差异,用字段表达状态上的变化"
--继承使不同的子类覆写不一样的具体方法内容,字段一般是在其中设置一个引用,调用这个引用的某个方法,

--这个引用是几个子类的父类或者接口,通过多态实现利用不同的子类来实例化接口,达到调用不同子类的目的。



========java编程思想第四版,下载链接===========================

http://download.csdn.net/detail/tzguo1314/5314416


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值