经常写业务代码,会有对字段值的判断,首先要校验非空,然后做值判断。如果值为null,不校验直接判断会引起异常,如果异常处理不当会引发事故。
所以,这样写会很简便:
new Integer(8).equals(d)
把比对的值放在Integer里,即便变量d为null也不会异常。
但是,这种写法的性能就比较低,下面比较一下:
public static void main(String[] args) {
Integer d = null;
Date start = new Date();
for (int i = 0; i < 100000; i++) {
if(new Integer(8).equals(d)){}
}
Date end = new Date();
System.out.println(1 + "-time:" + (end.getTime() - start.getTime()));
Date start2 = new Date();
for (int i = 0; i < 100000; i++) {
if(d != null && d == 8 ){}
}
Date end2 = new Date();
System.out.println(2 + "-time:" + (end2.getTime() - start2.getTime()));
}
执行结果:
1-time:28
2-time:1
循环10万次,差别还是挺大的。
原因:创建一个对象比较耗时。