Java 有人能解释一下这个数组的长度吗?
我们只能在java数组中存储固定的元素集。 但是我声明数组的大小为1,然后尝试存储四个元素。我可以看到大小增加到4。为什么?我们只能在数组中存储固定大小的元素。它不会长大。那为什么我的尺码是四而不是一Java 有人能解释一下这个数组的长度吗?,java,arrays,size,Java,Arrays,Size,我们只能在java数组中存储固定的元素集。 但是我声明数组的大小为1,然后尝试存储四个元素。我可以看到大小增加到4。为什么?我们只能在数组中存储固定大小的元素。它不会长大。那为什么我的尺码是四而不是一 String inputList ="I dont understand this"; String[] temp = new String[1]; temp = inputList.split(" "); System.out.println
String inputList ="I dont understand this";
String[] temp = new String[1];
temp = inputList.split(" ");
System.out.println(temp.length);
在这里,您创建了一个由1个元素组成的数组,并将其分配给temp
变量
String[] temp = new String[1];
在这里,您为temp
变量分配了一个不同的数组,该数组由inputList.split(“”
)创建并返回,它可以具有不同数量的元素(在您的示例中为4个)
第二次赋值没有改变原来的1元素数组。但是,在第二次赋值之后,没有变量引用原始数组,因此您无法再访问它,并且可以对其进行垃圾收集。因为您正在重新设置“temp”变量,所以现在它是inputList.split(“”) 因为赋值不是永远“固定”变量 变量只包含对某个对象的引用,在您的例子中是对数组的引用 首先,变量引用一个包含一个元素的数组。然后更改该值,使同一变量现在引用另一个数组(由
split()
创建)
如果您想防止这种情况发生,您可以使用
temp = inputList.split(" ");
现在,当您尝试为该变量重新赋值时,编译器会给出一个错误 原因很简单
String[] temp = new String[1];
final String[] temp = new String[1];
temp这里只是一个参考变量,它以前指向一个只有一个元素的数组。但是当执行第三行代码时,temp开始指向由split函数返回的新字符串数组 不,您没有将数组声明为大小为1的数组。您只是将引用
temp
分配给一个大小为1的数组。然后将一个引用分配给大小为4的数组。您的原始数组从未更改,只是被垃圾收集。@pvg我更喜欢“符合垃圾收集条件”表达式,因为不能保证旧数组确实被垃圾收集。@Mena确定。也不能保证太阳会升起,但这是一个合理的可能性,也是一个合理的非正式捷径来假装太阳会升起。@pvg不想听起来很迂腐,只是准确:)@mena这是一个完全合理的观点,尽管从现在起我很想说“阵列被带到北部的一个农场”。