1. 程式人生 > >測者的測試技術手冊:Java中的null型別是測試不可超越的鴻溝

測者的測試技術手冊:Java中的null型別是測試不可超越的鴻溝

null是一個非常非常特殊的型別,對於每一個測試人員都要十分小心null的存在的可能性。同時null也讓很多RD頭疼,甚至連Java的設計者都成人null是一個設計失誤。這篇文章,測者想聊聊這個讓很多人不喜歡的null。

null 到底是怎樣的存在

在Java中有基本型別和引用型別,但是null卻不屬於上述兩種,我們即不能宣告一個變數為null型別,也不能將變數轉換為null。null的引用是唯一一種null正確的表達方式。但是null卻可以轉換成任何一種引用型別。

  1. public class MrTesterTestClass{

  2.  

  3.    Integer int1 = null;

  4.    String str1 = null;

  5.    Integer int2 = (Integer) null;

  6.    String str2 = (String) null;

  7.  

  8. }

上面的程式碼在編譯其中並不會報錯。但是如果我們使用:

  1. int int3 = null

那麼就出出現問題。

null的一些細節注意點

null的裝箱拆箱的細節

先說一個Java的概念:裝箱和拆箱

  1. Integer count =100;裝箱

  2.  

  3. int sum =count;拆箱

上面的程式碼清洗的解釋了裝箱和拆箱的過程,裝箱就是自動將基本資料型別轉換為包裝器型別;拆箱就是自動將包裝器型別轉換為基本資料型別。

但是如果任何一個包裝器型別在拆箱的時候都會包NPE異常(空指標異常)。

布林運算

null很特別,但是可以而且僅可以做布林運算。

null==null的結果是true,但是這裡面特別注意:如果是兩個null的引用變數那麼首先要保證兩個引入變數的型別完全一致。運算結果才會是true。

String型別轉換

  1. public static void main(String[] args){

  2.  

  3.    String str = null;

  4.  

  5.    str= str+"ss";

  6.  

  7.    System.out.println(str);

  8. }

上面的程式碼的輸出:nulss。String轉換後的null可以進行字串運算,這是因為字串進行連線的時候,編譯器對null進行了特別的優化。

null 不等於“”

null和“”不相等,這是因為“”會在內容中有一個

關注測者,關注測試