Effective Java 学习笔记 (7)
Finalizer 不可计划的,也是危险的,一般也是不必要的. 不能在finalizer中放任何与依赖时间相关的操作,因为你不知道它什么时候被执行. 比如在finalizer中关闭文件的做法就是错误的, 根据JVM的实现方式不同,有可能导致打开的文件数过多而无法再打开文件. 也不能在finalizer中改变状态,如给数据库解锁等. finalizer还能带来严重的性能问题, 显示的调用的终止函数可以采用try -finally的语句 当然,合法的使用finalizer有两种情况: 一种是做为最后的一道关卡,检测用户是否有没有被释放的资源,如果有则释放它,并打印出警告. 虽然不提倡在finalizer中释放资源,但晚释放总比不释放好(beter later than never) 还一种合法使用就是在使用 native方法的时候. 要注意,finallizer没有承继关系,在子类中必须显示调用父类中的函数.
相关文档:
自从学习Java以来已经一年有余了,对Java还只是初阶段的了解,都怪在学校的时候贪玩没有有效的利用时间,现在在一个培训学校学习Java,现在就要做项目了还是什么都不懂,还好有Csdn。
在Csdn的日子里叫我找到了家的感觉,得到了很 ......
注释的原则
1、 注释形式统一
在整个应用程序中,使用具有一致的标点和结构的样式来构造注释。如果在其他项目组发现他们的注释规范与这份文档不同,按照他们的规范写代码,不要试图在既成的规范系统中引入新的规范。
2、 注释的简洁
内容要简单、明了、含义准确,防止注释的多义性,错误的注释不但无益反而有害。
......
1 package 和 import的作用是分割全局命名空间,保证我们不会遇到名字的冲突。
2 java解释器的工作程序:
(1) 首先它找到环境变量CLASSPATH , CLASSPATH包含一个或多个目录,它们作为一个特殊的根使用,从这里展开对.class文件的搜索,
从那个根开始,解释器会寻找包名,并将它们每一个点号 ......
JAVA是强类型的语言。当引用对象的时候,如果是上溯的话,需要强制转换。如你上面写的,
PiePlot p = (PiePlot)Plot,这就是上溯,生成实例时引用的是父类,需要强制转换,所以就需要加个(PiePlot)来声明Plot(Plot是父类)。 ......