2011-11-05 68 views
0

我想知道Java數組是否在聲明後被修復。當我們這樣做:聲明後Java中的數組大小是否已修復?

int a[10];

,然後我們可以這樣做:

a = new int [100];

我不能確定,如果第一個語句已經分配了一些內存和第二條語句分配新的內存塊和重新分配並覆蓋先前的參考。

+13

如果你已經爲自己嘗試了這一點,你會發現'int a [10];'是無效的語法。 -1。 –

+1

a [10]是語法錯誤 – Shaun

回答

2

第二條語句分配一個新的內存塊,並且之前的引用最終將被垃圾收集。

您可以使用java調試器自己查看它。你會注意到第二個語句執行後,a會指向不同的位置。

祝你好運H.W.

9

是的,它是:

在創建陣列時的陣列的長度被建立。 創建後,其長度是固定的。

取自here

此外,在您的問題第一個方案:int a[10]是語法錯誤。

+1

數組大小是在創建數組時確定的,而不是聲明變量時確定的。我想這是否意味着它是「聲明後固定的」取決於「聲明後」是指「聲明後立即」還是「在聲明後的某個時候,也許」。 –

1

數組的固定長度是在創建時確定的。如果你想要一個長度可變的數據結構,請查看ArrayList或LinkedList類。

1

陣列具有固定的長度,但如果希望的數組元素和增加然後在下面的代碼可能有幫助的陣列大小

私有對象[]的MyStore =新對象[10];

現在如果你想數組大小增加,在正常的方式,你必須創建與其他尺寸的另一陣列和通過第一陣列循環再插入所有元素,但數組類提供inbuild這可能是有用的方法

myStore = Arrays.copyOf(myStore,myStore.length * 2);

相關問題