1、在做條件判斷時,不要將變數放在判斷符的左邊,這樣做可以防止出現空指針異常,以字元串比較為例: 2、對於Integer類型的比較,一定要用equals進行比較,用==比較會出現問題。在-128~127這個區間內,Integer用==和equals的結果是一樣的,但是超出這個區間,用==比較就會出現 ...
1、在做條件判斷時,不要將變數放在判斷符的左邊,這樣做可以防止出現空指針異常,以字元串比較為例:
1 String name = "Tom"; 2 //這種方式不推薦,如果變數name為空,會出現空指針異常 3 if(name.equals("Tom")) { 4 //balabala.... 5 } 6 //推薦這種方式,調用的是"Tom"這個字元串常量的equals方法,可避免空指針異常 7 if("Tom".equals(name)) { 8 //balabala 9 }
2、對於Integer類型的比較,一定要用equals進行比較,用==比較會出現問題。在-128~127這個區間內,Integer用==和equals的結果是一樣的,但是超出這個區間,用==比較就會出現錯誤的結果。例:
1 Integer a = 128; 2 Integer b = 128; 3 Integer c = new Integer(127); 4 Integer d = 127; 5 Integer e = 127; 6 System.out.println("a.equals(b): " + a.equals(b)); 7 System.out.println("a == b: " + (a == b)); 8 System.out.println("d.equals(c):" + d.equals(c)); 9 System.out.println("d == c: " + (d == c)); 10 System.out.println("d == e: " + (d == e));
結果:
具體原因請見理解Java Integer的緩存策略【轉】,簡單來說,就是在-128~127之間的Integer值,使用緩存中包含的實例對象,而不是創建一個新的實例。