Java String join()方法

Java String类的join()方法将字符串使用给定的分隔符连接起来。在String join()方法中,每个元素都会复制分隔符。join()方法自JDK 1.8版本起包含在Java字符串中。

Java String类中有两种类型的join()方法。

语法

join()方法的签名或语法如下:

public static String join(CharSequence delimiter, CharSequence... elements)    
and    
public static String join(CharSequence delimiter, Iterable<? extends CharSequence> elements)   

参数

delimiter:每个元素之间要添加的字符值

elements:要附加到分隔符的字符值

返回值

使用分隔符连接的字符串

异常抛出

如果元素或分隔符为null,则抛出NullPointerException。

自从

1.8版本

内部实现

// type - 1  
public static String join(CharSequence delimiter, CharSequence... elements)   
{  
        Objects.requireNonNull(elements);  
        Objects.requireNonNull(delimiter);        
          
        StringJoiner jnr = new StringJoiner(delimiter);  
        for (CharSequence c: elements)   
        {  
            jnr.add(c);  
        }  
        return jnr.toString();  
}   
// type - 2  
public static String join(CharSequence delimiter, CharSequence... elements)   
{  
        Objects.requireNonNull(elements);  
        Objects.requireNonNull(delimiter);        
          
        StringJoiner jnr = new StringJoiner(delimiter);  
        for (CharSequence c: elements)   
        {  
            jnr.add(c);  
        }  
        return jnr.toString();  
}  
  
public static String join(CharSequence delimiter, Iterable<? extends CharSequence> elements)   
{  
  
  
        Objects.requireNonNull(elements);  
        Objects.requireNonNull(delimiter);  
          
        StringJoiner jnr = new StringJoiner(delimiter);  
        for (CharSequence c: elements)   
        {  
            joiner.add(c);  
        }  
        return jnr.toString();  
    }  

Java String join()方法示例

文件名:StringJoinExample.java

public class StringJoinExample{  
public static void main(String args[]){  
String joinString1=String.join("-","welcome","to","javatpoint");  
System.out.println(joinString1);  
}}  

输出:

welcome-to-javatpoint

Java String join()方法示例2

我们可以使用分隔符来格式化字符串,就像下面的示例中展示日期和时间一样。

文件名:StringJoinExample2.java

public class StringJoinExample2 {  
    public static void main(String[] args) {          
        String date = String.join("/","25","06","2018");    
        System.out.print(date);    
        String time = String.join(":", "12","10","10");  
        System.out.println(" "+time);  
    }  
}  

输出:

25/06/2018 12:10:10

Java String join()方法示例3

如果使用null作为分隔符,我们会得到空指针异常。以下示例确认了这一点。

文件名:StringJoinExample3.java

public class StringJoinExample3   
{  
// main method  
public static void main(String argvs[])  
{  
String str = null;  
str = String.join(null, "abc", "bcd", "apple");  
System.out.println(str);  
}  
}  

输出:

Exception in thread "main" java.lang.NullPointerException
    at java.base/java.util.Objects.requireNonNull(Objects.java:221)
    at java.base/java.lang.String.join(String.java:2393)
    at StringJoinExample3.main(StringJoinExample3.java:7)

然而,如果要附加到分隔符的元素为null,则会出现歧义。这是因为有两种join()方法,而null对于两种类型的join()方法都是可接受的。观察下面的示例。

文件名:StringJoinExample4.java

public class StringJoinExample4  
{  
// main method  
public static void main(String argvs[])  
{  
String str = null;  
str = String.join("India", null);  
System.out.println(str);  
}  
}  

输出:

/StringJoinExample4.java:7: error: reference to join is ambiguous
str = String.join("India", null);
            ^
  both method join(CharSequence,CharSequence...) in String and method join(CharSequence,Iterable<? extends CharSequence>) in String match
/StringJoinExample4.java:7: warning: non-varargs call of varargs method with inexact argument type for last parameter;
str = String.join("India", null);
                           ^
  cast to CharSequence for a varargs call
  cast to CharSequence[] for a non-varargs call and to suppress this warning
1 error
1 warning

Java String join()方法示例4

如果要附加到分隔符的元素中有一些字符串是null,则将null元素视为普通字符串,不会引发任何异常或错误。让我们通过一个示例来理解。

文件名:StringJoinExample5.java

public class StringJoinExample5  
{  
// main method  
public static void main(String argvs[])  
{  
String str = null;  
  
// one of the element is null however it will be treated as normal string  
str = String.join("-", null, " wake up ", " eat ", " write content for JTP ", " eat ", " sleep ");  
System.out.println(str);  
}  
}  

输出:

null- wake up - eat - write content for JTP - eat - sleep

标签: java, Java面试题, Java下载, java教程, java技术, Java学习, Java学习教程, Java语言, Java开发, Java入门教程, Java进阶教程, Java高级教程, Java笔试题, Java编程思想