Java:当数组的长度为1时,为什么数组的长度为1

时间:2016-11-21 20:57:38

标签: java arrays string split

我对以下编写的代码感到困惑,因为我认为数组的长度(allCommands)在没有任何内容时将为0。

字符串test只有井号,然后我得到它后面的子串,然后用#拆分。

String test = "#";
int beginIndex = test.indexOf("#");
test = test.substring(beginIndex+1);
String[] allCommands = test.split("#");
System.out.println("allCommands length: " + allCommands.length); // output: 1
System.out.println("allCommands array: " + Arrays.toString(allCommands)); // output: []

有人可以解释一下吗?谢谢!

3 个答案:

答案 0 :(得分:1)

它是一个空字符串的数组。试试这个:

System.out.println(Arrays.toString(new String[]{""}));

它会打印[]

答案 1 :(得分:1)

它是一个零长度(空)字符串,在程序下面打印0。

.*

答案 2 :(得分:1)

因为当你使用test.split('#')时,它返回一个由分割器计算的字符串数组,在这种情况下是空字符串,因为没有什么可以拆分了。这个空字符串进入String[] allCommands,这就是为什么大小为1而数组为空。