Java教程-Java String join()方法

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