數組長度爲0和數組爲null的區別(最詳細易懂)
拿以下四句代碼舉例
(1)int[] array; //只聲明數組,未賦初值。
(2)int[] array = null; //數組爲null。
(3)int[] array = {}; //數組長度爲0。
(4)int[] array = new int[0]; //數組長度爲0。
解析:
(1)array聲明時就在棧內存中開闢一塊4byte空間,但是隻是聲明array,並沒有給array裝進具體的數組地址。
注意:在棧中開闢的這塊4byte空間是array本身這個數組指針變量的地址。
( 32位環境下, int型指針變量佔4字節內存 )
(2)給array賦一個null,相當於還是沒有給它數組地址,也就是沒有開闢一塊數組的內存。
相當於array做好了準備接一個數組的地址,還是沒有給,有在搞它。
(3)這次給array賦了一個數組的地址,但是這個數組{}是裏面沒有值,長度爲0的數組,但是確實在內存裏開闢了一塊數組的空間。
有了數組,也有了數組地址,但是沒給數組裝進數值。
(4)和(3)本質是一樣的,都是給array賦了一塊長度爲0的數組地址。但是new int[0] 是在堆裏面開闢了一塊空間。