Thinking In Java阅读笔记(1)

读到第四章的时候,文中提到了垃圾回收的概念,于是想起了.net中的垃圾回收与java的垃圾回收的区别。对于c#和java来说,它们都生产在一个受控的环境中,也就是内存的管理通常情况下是由运行时和垃圾回收器来管理的。那么他们之间有什么区别呢?

java为程序员提供了一个机制称之为finalize的方法(这个在c#中也有),当垃圾回收器需要回收资源的时候,它会首先去调用finalize()方法。我们可以通过显示的调用System.gc()方法来强制垃圾回收器进行回收工作,这个总是能行吗?我还不确定。 但是对于finalize()方法的使用,由于进行垃圾回收会消耗一些性能,所以书上的建议是对非受控内存的分配时使用finalize()方法,如c的malloc分配的内存,你需要在finalize()中调用free。Java还是比较建议程序员自己去显示释放内存,如果必须的话。建立Dispose()方法,调用Dispose方法(这个方法在c#里面有,不过被设计成重写的模式,并且如果你实现了这个方法,某些情况下它会在垃圾回收前自动被调用,如在using块内)。与.net相同的是没当垃圾回收器启动的时候,所有的程序都必须停下来,等待。我们难以探究两种垃圾回收器的回收算法。不过从内存管理这个角度来说, .net确实从java那里copy了不少东西。

抽象类和接口的异同点
不同点:
1. 接口是一个实现多继承的规范,而类只能继承自另一类
2. 接口的方法是不能被实现的,抽象类的方法和成员则可以部分被实现
3.  一个接口可以继承自多个接口,而一个类只能继承自另一个类
4. 接口的速度要比抽象类慢一些,因为接口要确定一个方法的响应者是谁。
相同点:
接口和抽象类都不能被实例化

从网上捡来的一些java面试题,还不错:
http://www.roseindia.net/interviewquestions/corejava.shtml
http://java.sys-con.com/read/48839.htm
http://java.sys-con.com/read/48839_1.htm
http://java.sys-con.com/read/48839_2.htm

http://www.allapplabs.com/interview_questions/java_interview_questions.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值