String字符串拼接

1.简介

对于String来说是不可变的,使用+修改字符串是在不断地创建新的字符串对象,而不是在原有的对象上修改的。并且对于字符串的修改和拼接通常提供StringBuffer和StringBuilder,以及使用的String.join()方法,具体如下所示。

2.StringBuilder

2.1StringBuilder介绍

StringBuilder是Java中的一个类,用于处理可变的字符串。它的设计目的是在进行频繁的字符串操作时,避免创建多个不可变的String对象,从而提高字符串的处理效率StringBuilder类位于java.lang包中,无需额外导入就可以直接使用。

2.2使用说明

  1. 创建StringBuilder对象:
StringBuilder sb = new StringBuilder();
  1. 添加字符串:

使用append()方法在StringBuilder末尾添加字符串。

sb.append("Hello");
sb.append(" ");
sb.append("Java");

或者使用链式调用:

sb.append("Hello").append(" ").append("Java");
  1. 插入字符串:

使用insert()方法在指定位置插入字符串。

sb.insert(6, ”wuhaha“);
  1. 删除字符串:

使用delete()方法删除指定范围内的字符串。

sb.delete(6, 15);
  1. 替换字符串:

使用replace()方法替换指定范围内的字符串。

sb.replace(0, 5, "Hi");
  1. 反转字符串:

使用reverse()方法反转StringBuilder中的内容。

sb.reverse();
  1. 获取字符串:

使用toString()方法将StringBuilder转换为一个不可变的String对象。

String result = sb.toString();
  1. 获取当前容量和长度:

capacity()方法返回当前StringBuilder的容量(可容纳字符的最大数量)。 length()方法返回当前StringBuilder中实际包含的字符数。

int capacity = sb.capacity();
int length = sb.length();
  1. 设置容量:

使用ensureCapacity()方法设置StringBuilder的容量。这样可以提前分配足够的空间,避免频繁地扩容,提高性能。

sb.ensureCapacity(100); // 设置容量为100
  1. 清空StringBuilder

使用setLength()方法将StringBuilder的长度设置为0,清空其中的内容。

sb.setLength(0);

StringBuilder是非线程安全的,如果在多线程环境下使用,建议使用StringBuffer类,它与StringBuilder类功能相似,但是线程安全。通常情况下,如果不涉及多线程操作,推荐使用StringBuilder,因为它的性能更好,速度也更快一些。

3.StringBuffer

StringBuffer是Java中用于处理可变字符串的类,它与StringBuilder类似,但是具有线程安全的特性。StringBuffer类位于java.lang包中,无需额外导入就可以直接使用。

以下是StringBuffer的详细使用说明:

  1. 创建StringBuffer对象:

    StringBuffer sb = new StringBuffer();
    
  2. 添加字符串:

    使用append()方法在StringBuffer末尾添加字符串。

    sb.append("Hello");
    sb.append(" ");
    sb.append("Java");
    

    或者使用链式调用:

    sb.append("Hello").append(" ").append("Java");
    
  3. 插入字符串:

    使用insert()方法在指定位置插入字符串。

    sb.insert(5, " beautiful");
    
  4. 删除字符串:

    使用delete()方法删除指定范围内的字符串。

    sb.delete(6, 15);
    
  5. 替换字符串:

    使用replace()方法替换指定范围内的字符串。

    sb.replace(0, 5, "Hi");
    
  6. 反转字符串:

    使用reverse()方法反转StringBuffer中的内容。

    sb.reverse();
    
  7. 获取字符串:

    使用toString()方法将StringBuffer转换为一个不可变的String对象。

    String result = sb.toString();
    
  8. 获取当前容量和长度:

    capacity()方法返回当前StringBuffer的容量(可容纳字符的最大数量)。 length()方法返回当前StringBuffer中实际包含的字符数。

    int capacity = sb.capacity();
    int length = sb.length();
    
  9. 设置容量:

    使用ensureCapacity()方法设置StringBuffer的容量。这样可以提前分配足够的空间,避免频繁地扩容,提高性能。

    sb.ensureCapacity(100); // 设置容量为100
    
  10. 清空StringBuffer

    使用setLength()方法将StringBuffer的长度设置为0,清空其中的内容。

    sb.setLength(0);
    

StringBuffer是线程安全的,适用于多线程环境下的字符串操作。但是在单线程环境下,如果没有特殊需求,推荐使用StringBuilder,因为它的性能更好。除非确实需要线程安全,否则StringBuilder通常更适合日常使用。

4.StringJoiner

StringJoiner是Java中用于拼接字符串的类,它提供了一种简单的方法来连接多个字符串,并可以在字符串之间添加分隔符。StringJoiner类位于java.util包中,需要导入使用。

以下是StringJoiner的详细使用说明:

  1. 创建StringJoiner对象:

    构造函数接收两个参数:分隔符(delimiter)和可选的前缀(prefix)和后缀(suffix)。分隔符是必需的,而前缀和后缀是可选的。

    StringJoiner sj = new StringJoiner(",", "[", "]");
    

    上面的例子表示使用逗号作为分隔符,同时在拼接的结果字符串前后分别添加方括号 []

  2. 添加字符串:

    使用add()方法向StringJoiner中添加字符串。

    sj.add("apple");
    sj.add("orange");
    sj.add("banana");
    

    这将在分隔符之间拼接字符串,并自动处理分隔符的添加。

  3. 获取拼接结果:

    使用toString()方法获取最终的拼接结果。

    String result = sj.toString();
    

    最终的结果将是 "[apple,orange,banana]"

  4. 设置空值替换:

    使用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()的详细使用说明:

  1. 使用String.join()

    String.join()方法接收两个参数:分隔符(delimiter)和要连接的多个字符串(Iterable、数组等)。

    String delimiter = ",";
    String result = String.join(delimiter, "apple", "orange", "banana");
    

    上面的例子表示使用逗号作为分隔符,将字符串 "apple""orange""banana" 连接成一个字符串。最终的结果将是 "apple,orange,banana"

  2. 使用数组作为参数:

    String.join()方法也可以接收一个字符串数组作为参数。

    String delimiter = "-";
    String[] array = {"2019", "08", "31"};
    String date = String.join(delimiter, array);
    

    上面的例子使用连字符(-)作为分隔符,将字符串数组 array 中的元素连接成一个日期字符串。最终的结果将是 "2019-08-31"

  3. 使用Iterable作为参数:

    String.join()方法还可以接收一个Iterable对象作为参数,例如ListSet等。

    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等。