Java基礎6(String str;與String str=null的區別)

1) String str;
棧內存開闢一塊空間,存儲str引用

2) String str = null;
棧內存開闢一塊空間,儲存str引用,
堆內存中開闢一塊空間,
str指向那塊空的內存的地址

3)String str = new String("String");
棧內存開闢一塊空間,儲存str引用,
先在內存的常量池中查詢是否存在“String”,如存在,則將該塊空間複製一份到內存的堆區間上,並將str指向該塊區域,如不存在,則先在常量池中創建 一個“String”,然後將其複製到堆,再令str指向它。就是說無論如何都必然會創建一個新的String字符串對象,不管你字符串池有沒有

注意:

初始化一個局域變量爲null,是爲了在非法使用此變量時報空指針異常,容易找到錯誤發生的地方,只是一個習慣,不是必須

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章