举个粟子吧,判断用户会员是否处于有效期,通常有以下类似代码:
//判断用户会员是否在有效期
public boolean isUserVIPValid() {
Date now = new Date();
Calendar gmtCal = Calendar.getInstance();
gmtCal.set(2019, Calendar.JANUARY, 1, 0, 0, 0);
Date beginTime = gmtCal.getTime();
gmtCal.set(2020, Calendar.JANUARY, 1, 0, 0, 0);
Date endTime= gmtCal.getTime();
return now.compareTo(beginTime) >= 0 && now.compareTo(endTime) <= 0;
}
但是呢,每次调用 isUserVIPValid 方法,都会创建 Calendar 和 Date 对象。其实吧,除了 New Date,其他对象都是不变的,我们可以抽出全局变量,避免创建了不必要的对象,从而提高程序效率,如下:
public class Test {
private static final Date BEGIN_TIME;
private static final Date END_TIME;
static {
Calendar gmtCal = Calendar.getInstance();
gmtCal.set(2019, Calendar.JANUARY, 1, 0, 0, 0);
BEGIN_TIME = gmtCal.getTime();
gmtCal.set(2020, Calendar.JANUARY, 1, 0, 0, 0);
END_TIME = gmtCal.getTime();
}
//判断用户会员是否在有效期
public boolean isUserVIPValid() {
Date now = new Date();
return now.compareTo(BEGIN_TIME) >= 0 && now.compareTo(END_TIME) <= 0;
}
}