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

java: does the string .split method change the size of an array

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

`字符串示例 = 新字符串 [5];

当我在

行调用split方法时

string x = "abc, def, g";

example = x.split(",");

example[0] = abc

example[1] = def

example[2] = g

我无法再访问 example[3] 和 example[4],因为我得到空指针

不应该仍然可以使用 null 值访问它们吗?

您的初始 example 数组(长度为 5,具有 null 值)被调用 split() 方法返回的新数组覆盖,在本例中为数组长度 3。example 引用引用的初始数组不再可访问,它将被垃圾收集。

如果你想保留两个数组,你可以将拆分的结果分配给另一个变量

String[] example2 = x.split(",");

它不保留值。 "example" 分配了一个全新的不同数组。

如果你想保留数组中先前存在的元素数量,你可以这样做:

int num = example.length;
example = x.split(",");
example = Arrays.copyOf(example, num);
// initialize the new array elements here.

当然这样做效率不高,应该避免。我建议您改为查看数组列表。

即使您创建了一个具有一些初始长度的数组,例如

String [] sample = new String[5];

将新数组分配给变量后,它将创建一个具有新数组大小的新数组。例如。

String s = "Hi how are you";
sample = s.split(" ");

所以你不能访问旧的数组元素。