字符串#根据"\ s +"拆分空字符串时的拆分行为

com*_*com 4 java arrays split

我是Java的新手.不幸的是,在Java中,很多新东西很难理解这些东西.

例如,

String str = "";
String[] arr = str.split("\\s+");
System.out.println(Arrays.toString(arr));
System.out.println(arr.length);
System.exit(0);
Run Code Online (Sandbox Code Playgroud)

输出是

[]
1
Run Code Online (Sandbox Code Playgroud)

但为什么?如果有人能解释为什么数组的长度为1,我将不胜感激.

Jam*_*mes 10

即使String实例为空,它仍然是一个String实例,并且必须在之后的某处放置"nothing" split().那是数组中的一个元素.

如果你打印str[0],你会得到一个空字符串.真正的"没有"将是null你得到的NullPointerException(你不能调用split()空值)


Ank*_*hal 7

在此输入图像描述空字符串存在于拆分数组的Ist位置.

public static void main(String[] args) {
        String str = "";
        String[] arr = str.split("\\s+");
        System.out.println(Arrays.toString(arr));
        System.out.println(arr[0]);
        System.out.println(arr.length);
        System.exit(0);
    }
Run Code Online (Sandbox Code Playgroud)

产量

[]

1
Run Code Online (Sandbox Code Playgroud)