String str = new String("abc"); ==> String str = "abc";
一、错误示范和正确用法
public class Person {
// DON'T DO THIS!
public boolean isBabyBoomer_no(Date birthDate) {
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
calendar.set(1946, Calendar.JANUARY, 1, 0, 0, 0);
Date boomStart = calendar.getTime();
calendar.set(1965, Calendar.JANUARY, 1, 0, 0, 0);
Date boomEnd = calendar.getTime();
return birthDate.compareTo(boomStart) >= 0 && birthDate.compareTo(boomEnd) < 0;
}
}
当用到isBabyBoomer_no这个方法的时候,一次就会得到一个Calendar实例,多次调用当然就多个日历实例。
/**
* baby boomer 出生高峰期出生的小孩 即1946年至1964年期间
*/
public class Person {
public static final Date BOOMSTART;
public static final Date BOOMEND;
static {
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
calendar.set(1946, Calendar.JANUARY, 1, 0, 0, 0);
BOOMSTART = calendar.getTime();
calendar.set(1965, Calendar.JANUARY, 1, 0, 0, 0);
BOOMEND = calendar.getTime();
}
public boolean isBabyBoomer_ok(Date birthDate) {
return birthDate.compareTo(BOOMSTART) >= 0 && birthDate.compareTo(BOOMEND) < 0;
}
}
实例化Person的时候得到日历实例,进而得到两个日期,当调用isBabyBoomer_ok的时候也仅只有一个日历实例。