我可以每次使用更改长度的数组变量吗? 喜欢
<ul>
<li><a>Hover Here</a><span class="hidden">hidden</span></li>
</ul>
我可以像上面那样再次使用Prime吗?可能吗 ?如果你不能给我理由谢谢。
答案 0 :(得分:1)
您不是在重用相同的数组,而是创建数组对象的新实例。 java数组对象具有固定长度(final int
),因此在实例化之后无法更改数组的长度。
答案 1 :(得分:0)
对您的问题的一些解释。 您可以运行以下代码并更好地理解。 由于java无法获取地址,所以这里使用hashcode来显示对象地址。
int[] prime = new int[]{1,2,3,4};
System.out.println(Arrays.hashCode(prime));
System.out.println("prime[0]="+prime[0]);
prime = new int[]{4,3,2,1,0};
System.out.println(Arrays.hashCode(prime));
System.out.println("prime[0]="+prime[0]);
Output like this:
955331
prime[0]=1
1045631
prime[0]=4
答案 2 :(得分:0)
在分配内存后,无法调整数组大小,因为数组会获得连续的内存块。
int arr[] = new int[3];
保留内存空间后,无法调整阵列大小,因为下一个连续内存块可能无法使用。您可以创建一个新数组,并将前一个数组的所有元素移动到具有不同大小的新数组。
我建议将ArrayList用于动态数组。如果你遇到任何这种情况。
答案 3 :(得分:0)
您不更改数组的长度。您正在创建第二个数组,与第一个数组分开且不同。
您创建了两个数组,但只使用了一个引用变量(primes
)来跟踪它们。当您将第二个数组分配给primes
时,第一个数组被遗忘了。第一个数组仍在内存中浮动,如果没有其他引用指向它,则为最终garbage collection的候选者。
ArrayList
如果要调整大小,请使用List
等ArrayList
实现,而不仅仅是数组。您需要存储对象(Integer
)而不是基元(int
)。 auto-boxing feature in Java可以掩盖差异。
int initialCapacity = 6 ;
ArrayList< Integer > primes = new ArrayList<>( initialCapacity ) ;
primes.add( 7 ) ; // The primitive `int` 7 literal is automatically converted via autoboxing to be an `Integer` Object.
ArrayList
会根据需要自动增加其容量以存储其他项目。
如果您希望释放未分配用于容纳任何对象的额外容量,请致电ArrayList::trimToSize()
。