2011-11-05 34 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);

相关问题