Java 0.0.0.0的拆分方法的工作&&;0.0.0.0

Java 0.0.0.0的拆分方法的工作&&;0.0.0.0,java,string,Java,String,` ` 我将“0.0.0.0”和“0.0.0.0”分开。 在这两种情况下,我得到相同的字符串数组,即4“0”字符串。 有人能解释一下上述两种情况下,这种拆分是如何工作的。您似乎运行了以下命令 class GfG{ public String multiply(String a,String b){ String s = "0.0.0.0"; String[] str = s.split("\\."); for(String p:str){

`

` 我将“0.0.0.0”和“0.0.0.0”分开。 在这两种情况下,我得到相同的字符串数组,即4“0”字符串。
有人能解释一下上述两种情况下,这种拆分是如何工作的。

您似乎运行了以下命令

class GfG{
public String multiply(String a,String b){
        String s = "0.0.0.0";
        String[] str = s.split("\\.");
        for(String p:str){
            System.out.println(p);
        }
        return "";
    }
}
你对第一个结果很满意,但你想知道为什么最后一个结果不满意

jshell> "0.0.0.0".split("\\.")
$1 ==> String[4] { "0", "0", "0", "0" }

jshell> "0.0.0.0.".split("\\.")
$2 ==> String[4] { "0", "0", "0", "0" }
这是一个很好的问题,因为如果点位于字符串的开头,则会得到空字符串

String[4] { "0", "0", "0", "0", "" }
这就是
split
的工作原理。如果字符串末尾有分隔符,则不会返回空字符串


的副本,其中有详细说明。

您没有收到您认为应该在结尾返回的空字符串的原因是在
拆分中设计的

从文档中:

jshell> ".0.0.0.0".split("\\.")
$3 ==> String[5] { "", "0", "0", "0", "0" }
此方法的工作方式类似于通过调用具有 给定的表达式和零的极限参数。尾随空 因此,结果数组中不包括字符串

重要的一点是,后面的空字符串因此不包括在内


参考资料:

您编写了什么代码?我添加了“0.0.0.0”的代码Try String[]str=s.split(“\\”,-1);看看魔法。
public String[] split(String regex)