字符串数组长度显示为1,即使数组在逗号(,)之后调用为空

这是我的代码:

serialNumbers = ""; String[] serialArray = serialNumbers.split(","); int arrayLength = serialArray.length; 

arrayLength显示1,即使serialArray中没有值。 我希望在这种情况下长度应该返回0。

从文档 :

如果表达式与输入的任何部分都不匹配,那么结果数组只有一个元素,即该字符串。

请注意,此doc来自String.split(String, int)方法,该方法是从String.split(String)调用的。

拆分始终返回至少一个元素。

在未找到分隔符的情况下,整个输入以单元素数组的forms返回。

serialArray包含[""] ,它是1个元素

如果你看一下String.class的实现(参见下面的代码片段)。 这里off显示匹配计数, this是当前正在处理拆分操作的字符串,你的字符串为serialNumbers = ""; 。 这就是为什么它在数组中返回一个项目。

  // If no match was found, return this if (off == 0) return new String[]{this}; 

公共类TestArgs {

 public static void main(String[] args) { String checkString = ""; System.out.println("" + splitString(checkString)); } public static int splitString(String checkString) { if (checkString.indexOf(",") != -1 || !"".equals(checkString)) { System.out.println("hello " + checkString.split(",").length); return checkString.split(",").length; } else { return 0; } } 

}