Effective Java 学习笔记-1-创建与销毁对象
避免创建不必要的对象
-
// eg // No!!! // 第一次执行,会分别在常量池和堆上新建对象,之后每次执行都会在堆上新建对象 String str = new String("hello"); // Yes! // 只有第一次执行在常量池上新建对象,之后直接复用 String str = "hello";
- 优先使用静态工厂方法,而不是构造器,以避免创建不必要的对象
- 自动装箱使得基本数据类型和装箱数据类型之间的差别变得模糊,但是并没有完全消除。
-
// eg private static long sum() { Long sum = 0L; for (long i = 0; i <= Integer.MAX_VALUE; i++) { sum += 1; } return sum; }
- 这个例子中,long 被错写成了 Long 导致每次循环都会新建一个 Long 对象,影响性能
- 要优先使用基本数据类型,而不是装箱基本类型,避免无意识的自动装箱
-
Q.E.D.
Comments | 0 条评论