第5条:避免创建不必要的对象

160 阅读1分钟

比如创建一个字符串的时候

String s = new String("123");

这是就创建了两个对象 我们可以

String s = "123";

对于同时提供了静态工厂方法和构造器的不可变类,通常可以使用静态工厂方法而不是构造器,以避免创建不必要的的对象。 例如静态工厂方法Boolean.valueOf(String)几乎总是优先于构造器Boolean(String)。构造器在每次被调用的时候都会创建一个新的对象,而静态工厂方法则从来不要求这样做,实际上也不会这样做。

自动装箱示例:

Long sum = 0;
for(long i=0;i<Integer.MAX_VALUE;i++){
  sum+=i;
}

变量sum被声明成Long而不是long,意味着程序构造了大约2^31个多余的Long实例。 结论:要优先使用基本类型而不是装箱基本类型,要当心无意识的自动装箱。

所以要尽可能的避免创建对象。