0
今天,我在考試的以下問題:對象的數量創造了
String[] subjects=new String[10];
String subname="POPL-201617";
subjects[0]=subName;
subName=null;
創建了多少東西?
我的回答:將創建11個對象。 10從第一個語句,一個是字符串文字。
代碼執行後對這些對象存在多少個引用?
我的回答:總共提到了一個「POPL-201617」。
說明這些對象是否符合垃圾回收的條件。
我的回答:既然有一個對「POPL-201617」的引用,它就沒有資格進行垃圾回收。即使沒有參考,它也是一個interned字符串,因此不能被垃圾收集。其餘的都有資格進行垃圾回收。
我關注的第一個語句。我們沒有將任何參數傳遞給String類的構造函數。它會形成對象還是隻是空間分配在堆上?
此外,我的理解說,主題最初指向陣列的基礎。所以,第一個元素最初有一個參考。但是因爲subject [0]現在引用了POPL,所以no數組元素沒有任何引用。
我正確嗎?或者我錯過了什麼?
您在第一條語句中沒有創建任何*字符串對象。你只是在創建一個數組(一個對象)。數組中的每個元素都將是空引用。 –
地獄。我怎麼錯過了?有6分。 –
在某些情況下,可以垃圾收集Interned字符串。 – assylias