String字符串拼接
String字符串拼接
1.简介
对于String来说是不可变的,使用+修改字符串是在不断地创建新的字符串对象,而不是在原有的对象上修改的。并且对于字符串的修改和拼接通常提供StringBuffer和StringBuilder,以及使用的String.join()方法,具体如下所示。
2.StringBuilder
2.1StringBuilder介绍
StringBuilder是Java中的一个类,用于处理可变的字符串。它的设计目的是在进行频繁的字符串操作时,避免创建多个不可变的String
对象,从而提高字符串的处理效率。StringBuilder
类位于java.lang
包中,无需额外导入就可以直接使用。
2.2使用说明
- 创建
StringBuilder
对象:
StringBuilder sb = new StringBuilder();
- 添加字符串:
使用append()
方法在StringBuilder
末尾添加字符串。
sb.append("Hello");
sb.append(" ");
sb.append("Java");
或者使用链式调用:
sb.append("Hello").append(" ").append("Java");
- 插入字符串:
使用insert()
方法在指定位置插入字符串。
sb.insert(6, ”wuhaha“);
- 删除字符串:
使用delete()
方法删除指定范围内的字符串。
sb.delete(6, 15);
- 替换字符串:
使用replace()
方法替换指定范围内的字符串。
sb.replace(0, 5, "Hi");
- 反转字符串:
使用reverse()
方法反转StringBuilder
中的内容。
sb.reverse();
- 获取字符串:
使用toString()
方法将StringBuilder
转换为一个不可变的String
对象。
String result = sb.toString();
- 获取当前容量和长度:
capacity()
方法返回当前StringBuilder
的容量(可容纳字符的最大数量)。 length()
方法返回当前StringBuilder
中实际包含的字符数。
int capacity = sb.capacity();
int length = sb.length();
- 设置容量:
使用ensureCapacity()
方法设置StringBuilder
的容量。这样可以提前分配足够的空间,避免频繁地扩容,提高性能。
sb.ensureCapacity(100); // 设置容量为100
- 清空
StringBuilder
:
使用setLength()
方法将StringBuilder
的长度设置为0,清空其中的内容。
sb.setLength(0);
StringBuilder
是非线程安全的,如果在多线程环境下使用,建议使用StringBuffer
类,它与StringBuilder
类功能相似,但是线程安全。通常情况下,如果不涉及多线程操作,推荐使用StringBuilder
,因为它的性能更好,速度也更快一些。
3.StringBuffer
StringBuffer
是Java中用于处理可变字符串的类,它与StringBuilder
类似,但是具有线程安全的特性。StringBuffer
类位于java.lang
包中,无需额外导入就可以直接使用。
以下是StringBuffer
的详细使用说明:
-
创建
StringBuffer
对象:StringBuffer sb = new StringBuffer();
-
添加字符串:
使用
append()
方法在StringBuffer
末尾添加字符串。sb.append("Hello"); sb.append(" "); sb.append("Java");
或者使用链式调用:
sb.append("Hello").append(" ").append("Java");
-
插入字符串:
使用
insert()
方法在指定位置插入字符串。sb.insert(5, " beautiful");
-
删除字符串:
使用
delete()
方法删除指定范围内的字符串。sb.delete(6, 15);
-
替换字符串:
使用
replace()
方法替换指定范围内的字符串。sb.replace(0, 5, "Hi");
-
反转字符串:
使用
reverse()
方法反转StringBuffer
中的内容。sb.reverse();
-
获取字符串:
使用
toString()
方法将StringBuffer
转换为一个不可变的String
对象。String result = sb.toString();
-
获取当前容量和长度:
capacity()
方法返回当前StringBuffer
的容量(可容纳字符的最大数量)。length()
方法返回当前StringBuffer
中实际包含的字符数。int capacity = sb.capacity(); int length = sb.length();
-
设置容量:
使用
ensureCapacity()
方法设置StringBuffer
的容量。这样可以提前分配足够的空间,避免频繁地扩容,提高性能。sb.ensureCapacity(100); // 设置容量为100
-
清空
StringBuffer
:使用
setLength()
方法将StringBuffer
的长度设置为0,清空其中的内容。sb.setLength(0);
StringBuffer
是线程安全的,适用于多线程环境下的字符串操作。但是在单线程环境下,如果没有特殊需求,推荐使用StringBuilder
,因为它的性能更好。除非确实需要线程安全,否则StringBuilder
通常更适合日常使用。
4.StringJoiner
StringJoiner
是Java中用于拼接字符串的类,它提供了一种简单的方法来连接多个字符串,并可以在字符串之间添加分隔符。StringJoiner
类位于java.util
包中,需要导入使用。
以下是StringJoiner
的详细使用说明:
-
创建
StringJoiner
对象:构造函数接收两个参数:分隔符(delimiter)和可选的前缀(prefix)和后缀(suffix)。分隔符是必需的,而前缀和后缀是可选的。
StringJoiner sj = new StringJoiner(",", "[", "]");
上面的例子表示使用逗号作为分隔符,同时在拼接的结果字符串前后分别添加方括号
[
和]
。 -
添加字符串:
使用
add()
方法向StringJoiner
中添加字符串。sj.add("apple"); sj.add("orange"); sj.add("banana");
这将在分隔符之间拼接字符串,并自动处理分隔符的添加。
-
获取拼接结果:
使用
toString()
方法获取最终的拼接结果。String result = sj.toString();
最终的结果将是
"[apple,orange,banana]"
。 -
设置空值替换:
使用
setEmptyValue()
方法设置当StringJoiner
没有任何元素时返回的默认值。默认情况下,StringJoiner
没有任何元素时返回空字符串。sj.setEmptyValue("No fruits"); // 设置默认值为 "No fruits"
如果在没有添加任何字符串的情况下调用
toString()
方法,将返回设置的默认值。String result = sj.toString(); // 如果没有添加任何元素,将返回 "No fruits"
StringJoiner
类提供了一种简单而灵活的方式来拼接字符串,并可以很方便地在每个字符串之间添加分隔符和前后缀。它特别适合于需要构建带有分隔符的字符串,如CSV文件、JSON数组等。
5.String.Join()
String.join()
是Java中String
类提供的静态方法,用于将多个字符串按照指定的分隔符连接成一个单一的字符串。String.join()
方法在Java 8及更高版本中引入,相比于早期版本中的StringUtils.join()
或StringBuffer
/StringBuilder
的操作,更加简洁和方便。
以下是String.join()
的详细使用说明:
-
使用
String.join()
:String.join()
方法接收两个参数:分隔符(delimiter)和要连接的多个字符串(Iterable、数组等)。String delimiter = ","; String result = String.join(delimiter, "apple", "orange", "banana");
上面的例子表示使用逗号作为分隔符,将字符串
"apple"
、"orange"
和"banana"
连接成一个字符串。最终的结果将是"apple,orange,banana"
。 -
使用数组作为参数:
String.join()
方法也可以接收一个字符串数组作为参数。String delimiter = "-"; String[] array = {"2019", "08", "31"}; String date = String.join(delimiter, array);
上面的例子使用连字符(
-
)作为分隔符,将字符串数组array
中的元素连接成一个日期字符串。最终的结果将是"2019-08-31"
。 -
使用Iterable作为参数:
String.join()
方法还可以接收一个Iterable
对象作为参数,例如List
、Set
等。String delimiter = " "; List<String> words = Arrays.asList("Java", "is", "awesome"); String sentence = String.join(delimiter, words);
上面的例子使用空格作为分隔符,将
List
对象words
中的元素连接成一个句子。最终的结果将是"Java is awesome"
。
String.join()
方法非常简单易用,它提供了一种快速拼接字符串的方式,特别适用于需要在多个字符串之间添加分隔符的场景,如拼接CSV数据、构建URL等。