《Effective Java》读书笔记--创建和销毁对象

白昼怎懂夜的黑 提交于 2020-03-01 22:46:06
考虑用静态工厂方法代替构造函数。

当我们在写一个工具类时,是不希望用户将该类实例化的,所以应该定义一个private的构造函数,而不
是将类声明成abstract,因为这样用户可以继承该类,子类可以被实例化。

String类型是非可变对象,如下代码中,s指向的String的值是不能被更改的,当s重新赋值时,s就指向另一个String对象。
String s = new String("silly");
上句代码每次执行都会创建一个新的String实例,建议用 String s = "silly";代替上一句,这样的话,对于同一个虚拟机中运行的代码,每次执行该句时,因为它们包含相同的字符串字面常量"silly",该对象就会重用,避免创建重复对象。

过期的引用应该手动将它赋值成null,这有两个好处:

  • 让垃圾回收机制及早清理掉这些“垃圾”,提高程序的性能。
  • 如果它们在以后又被错误地解引用,则程序会立即抛出NullPointerException异常,而不是悄悄的错误运行。
不要把JAVA的finalizer当成C++的构造函数。因为JAVA的对象不可达时,finalizer函数不确定何时才能执行。不建议把释放资源的操作写在finalizer中,应该显式的提供一个close()函数给用户手动释放资源。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!