有人可以给出这个数组长度的解释吗?

时间:2017-09-12 09:45:54

标签: java arrays size

    String  inputList ="I dont understand this";
    String[]    temp = new String[1];       
    temp = inputList.split(" ");
    System.out.println(temp.length);

我们只能在java数组中存储固定的元素集。 但我宣布数组的大小为一,然后试图存储四个元素。我可以看到尺寸增加到4.为什么?我们只能在数组中存储固定大小的元素。它的大小不会增长。那么为什么我的大小为四而不是一个呢?

4 个答案:

答案 0 :(得分:3)

String[] temp = new String[1];

在这里,您创建了一个包含1个元素的数组,并将其分配给temp变量。

temp = inputList.split(" ");

在这里,您为temp变量分配了一个由inputList.split(" ")创建并返回的不同数组,该数组可以包含不同数量的元素(在您的情况下为4)。

原始的1个元素数组未被第二个赋值更改。但是,在第二次赋值之后,没有变量指的是原始数组,所以你不能再访问它了,它可以被垃圾收集。

答案 1 :(得分:3)

原因很简单。

String  inputList ="I dont understand this";
String[]    temp = new String[1];       
temp = inputList.split(" ");//here you are simply changing the reference to 
                            //temp, now to store the result of split 
System.out.println(temp.length);

temp 这里只是一个引用变量,它先前指向只有一个元素的数组。但是当第3行代码执行时, temp 开始指向 split 函数返回的新字符串数组。

答案 2 :(得分:1)

因为作业"修复"永恒的变量。

变量只是将引用保存到某个对象,在您的情况下为数组。

首先,您的变量引用包含一个元素的数组。然后你改变它,以便同一个变量现在引用另一个数组(由split()创建)。

如果你想阻止发生这种情况,你可以使用

final String[] temp = new String[1];  

现在编译器在您尝试另一个值重新分配给该变量时给出错误。

答案 3 :(得分:-1)

因为你正在重新设置“temp”变量,现在它是inputList.split(“”);