經常寫業務代碼,會有對字段值的判斷,首先要校驗非空,然後做值判斷。如果值爲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萬次,差別還是挺大的。
原因:創建一個對象比較耗時。