空值只能賦予引用類型,如果我理解正確則指向地址0.此外,如果使用“new”關鍵字創(chuàng)建類的實例,我們將為對象分配內(nèi)存。我的問題是,如果我們將一個對象初始化為null,它是否仍然消耗內(nèi)存?
2 回答

拉風的咖菲貓
TA貢獻1995條經(jīng)驗 獲得超2個贊
int[] arr = null;
實際上沒有初始化任何東西。它只是創(chuàng)建一個arr
指向地址0 的引用。所以不,它不會占用任何空間,除了引用arr
本身需要多少(通常4或8個字節(jié),具體取決于系統(tǒng))。
另一方面,這會初始化對象并占用“大量”空間(至少大小為10x int
,因此> = 40個字節(jié)):
int[] arr = new int[10];

幕布斯7119047
TA貢獻1794條經(jīng)驗 獲得超8個贊
我對你要說的內(nèi)容有兩種解釋:
初始化為NULL
String hello = null;
這甚至沒有初始化任何東西。這就像有一個抽屜,在上面貼上標簽,但實際上沒有把任何東西放在抽屜里面。結果,它不消耗任何內(nèi)存
設置為NULL
String hello = "hey there!";hello = null;
這就像抽屜里裝滿了東西,然后將所有東西拿出去扔掉。這仍然消耗內(nèi)存,因為你扔掉的舊東西仍然存在。為了擺脫舊的東西,垃圾收集通常會遲早開始并將其全部刪除。你也可以System.gc()
手動,而不是我推薦它。
添加回答
舉報
0/150
提交
取消