所以我初始化了一个数组,让我们说
`string example = new string [5];
当我在
行上调用split方法时 string x = "abc, def, g";
example = x.split(",");
example[0] = abc
example[1] = def
example[2] = g
我无法再访问示例[3]和示例[4],因为我得到空指针
不应该使用null值来访问它们吗?
答案 0 :(得分:2)
它不会保留这些值。 "例如"被分配了一个全新的不同数组。
如果要保留先前存在于数组中的元素数,可以执行以下操作:
int num = example.length;
example = x.split(",");
example = Arrays.copyOf(example, num);
// initialize the new array elements here.
当然这样做并不是非常有效,应该避免。我建议你看一下数组列表。
答案 1 :(得分:2)
即使您创建了一个具有一些初始长度的数组,例如
String [] sample = new String[5];
将新数组分配给变量之后它将创建一个具有新数组大小的新数组。例如。
String s = "Hi how are you";
sample = s.split(" ");
所以你无法访问旧的数组元素。
答案 2 :(得分:1)
您的初始example
数组(长度为5且值为null
)会被调用split()
方法返回的新数组覆盖,在本例中为长度为3的数组。example
引用引用的初始数组不再可访问,它将被垃圾收集。
如果要保留两个数组,可以将拆分结果分配给另一个变量
String[] example2 = x.split(",");