java:字符串.split方法是否会改变数组的大小

时间:2015-05-23 04:44:24

标签: java string split

所以我初始化了一个数组,让我们说

`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值来访问它们吗?

3 个答案:

答案 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(",");