专业剑 : 4. 避免创建重复的对象


String s = new String("silly");

String s = "No longer silly";

public class Person {
    private final Date birthDate;

    public Person(Date birthDate) {
        this.birthDate = birthDate;
    }

    private static final Date BOOM_START;
    private static final Date BOOM_END;

    static {
        Calendar gmtCal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
        gmtCal.set(1946, Calendar.JANUARY, 1, 0, 0, 0);
        BOOM_START = gmtCal.getTime();
        gmtCal.set(1965, Calendar.JANUARY, 1, 0, 0, 0);
        BOOM_END = gmtCal.getTime();
    }

    public boolean isBabyBoomber() {
        return birthDate.compareTo(BOOM_START) >= 0 &&
                birthDate.compareTo(BOOM_END) < 0;
    }
}


如果一段代码可能会被频繁调用,而且耗费性能,就可以考虑把这段代码提取出来,放入一个静态代码段,把其中的局部变量改为final静态域。


通常,小对象的实例化和回收都是性能廉价的。