很簡單,我們以String類型為例:
① String a;
② String b="";
③ String c=null;
④ String A=new String();
A.isEmpty();
①是聲明了一個string類型的 a,即沒有再申請內存地址,更沒有指向引用地址;
②是聲明一個String類型的引用,其值為""空字符串,這個b引用指向的是空字符串的內存空間;
③是聲明一個字符串對象的引用,沒有指向任何的內存空間。null是一個沒有空間的對象(未實例化的對象),③和①的區別就是: ③有引用,①沒有。
我們看一下④的api
它的意思就是首先必須要有返回值,其次它的長度必須是0.
此時A的狀態是實例化了對象,但是沒有值。(為a分配了內存空間,還沒有給它塞數據)
我們畫個圖來更直觀的看一下
首先看b的
這個a和c的圖我感覺應該是這個樣子的
我們再看看b和A
b和A都是分配了內存空間,值好像都為"",是不是這個樣子呢?
是的。A和b的值是一樣的,它們的內存地址不一樣。