考虑用静态工厂方法代替构造函数。
当咱们在写一个工具类时,是不但愿用户将该类实例化的,因此应该定义一个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()函数给用户手动释放资源。