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(" ");
所以你不能访问旧的数组元素。
所以我初始化了一个数组让我们说
`字符串示例 = 新字符串 [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(" ");
所以你不能访问旧的数组元素。