String inputList ="I dont understand this";
String[] temp = new String[1];
temp = inputList.split(" ");
System.out.println(temp.length);
我们只能在java数组中存储固定的元素集。 但我宣布数组的大小为一,然后试图存储四个元素。我可以看到尺寸增加到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(“”);