Java基础-StringBuilder的基本使用

191 阅读3分钟

StringBuilder类

StringBuilder 可以看成是一个容器,创建之后里面的内容是可变的。

当我们在拼接字符串和反转字符串的时候会使用到

一、基本使用

public class StringBuilderDemo3 {
    public static void main(String[] args) {
        //1.创建对象
        StringBuilder sb = new StringBuilder("abc");

        //2.添加元素
        /*sb.append(1);
        sb.append(2.3);
        sb.append(true);*/

        //反转
        sb.reverse();

        //获取长度
        int len = sb.length();
        System.out.println(len);


        //打印
        //普及:
        //因为StringBuilder是Java已经写好的类
        //java在底层对他做了一些特殊处理。
        //打印对象不是地址值而是属性值。
        System.out.println(sb);
    }
}

2. 向StringBuilder添加内容

StringBuilder提供了多种方法来向字符序列中添加内容,最常用的方法是append()

  • 追加字符串

    	sb.append(" World");
    

    这将字符串" World"追加到sb的末尾。

  • 追加其他类型的数据
    append()方法被重载,可以接受多种类型的数据,如charintdoubleboolean等。例如:

    	sb.append('!');
    
    	sb.append(123);
    
    	sb.append(45.67);
    
    	sb.append(true);
    

扩展:链式编程

public class StringBuilderDemo4 {
  public static void main(String[] args) {
      //1.创建对象
      StringBuilder sb = new StringBuilder();

      //2.添加字符串
      sb.append("aaa").append("bbb").append("ccc").append("ddd");

      System.out.println(sb);//aaabbbcccddd

      //3.再把StringBuilder变回字符串
      String str = sb.toString();
      System.out.println(str);//aaabbbcccddd

  }
}

二、常用方法

3. 插入内容

StringBuilder提供了insert()方法,用于在指定的位置插入内容:

  • 插入字符串

    	sb.insert(5, "beautiful ");
    

    这将在索引为5的位置插入字符串"beautiful "

  • 插入其他类型的数据
    append()方法类似,insert()方法也被重载,可以接受多种类型的数据。

4. 删除内容

StringBuilder提供了delete()deleteCharAt()方法来删除内容:

  • 删除指定范围的字符

    	sb.delete(0, 5);
    

    这将删除从索引0到索引5(不包括索引5)之间的字符。

  • 删除指定索引的字符

    	sb.deleteCharAt(2);
    

    这将删除索引为2的字符。

5. 替换内容

StringBuilder提供了replace()方法来替换指定范围的字符:

  • 替换指定范围的字符

    	sb.replace(0, 5, "Hi");
    

    这将把从索引0到索引5(不包括索引5)之间的字符替换为"Hi"

6. 反转字符串

StringBuilder提供了reverse()方法来反转字符序列:

	sb.reverse();

7. 获取字符串长度

StringBuilder提供了length()方法来获取字符序列的长度:

	int length = sb.length();

8. 转换为字符串

StringBuilder提供了toString()方法,用于将字符序列转换为String对象:

	String str = sb.toString();

9. 设置字符

StringBuilder提供了setCharAt()方法来设置指定索引处的字符:

	sb.setCharAt(2, 'A');

这将把索引为2的字符设置为'A'

10. 截取子字符串

StringBuilder提供了substring()方法来截取子字符串:

	String subStr = sb.substring(2, 5);

这将截取从索引2到索引5(不包括索引5)之间的子字符串。

注意事项

  • 线程安全StringBuilder不是线程安全的,因此在多线程环境中使用时需要注意同步问题。如果需要线程安全的字符串构建器,可以使用StringBuffer
  • 容量管理StringBuilder内部维护一个字符数组来存储字符序列。当字符序列的长度超过数组的容量时,StringBuilder会自动扩容。扩容操作可能会带来一定的性能开销,因此可以通过构造方法指定一个合适的初始容量来减少扩容次数。

示例代码

以下是一个简单的示例,演示了如何使用StringBuilder来构建和修改字符串:

	public class StringBuilderExample {

	    public static void main(String[] args) {

	        // 创建一个StringBuilder对象并初始化

	        StringBuilder sb = new StringBuilder("Hello");

	        // 追加内容

	        sb.append(" World");

	        // 插入内容

	        sb.insert(5, "beautiful ");

	        // 替换内容

	        sb.replace(0, 5, "Hi");

	        // 删除内容

	        sb.delete(0, 3);

	        // 反转字符串

	        sb.reverse();

	        // 获取字符串长度

	        int length = sb.length();

	        System.out.println("Length: " + length);

	        // 转换为字符串并输出

	        String str = sb.toString();

	        System.out.println("Result: " + str);

	    }

	}

运行上述代码将输出:

	Length: 13

	Result: !dlrow dlroweutibaeH

通过示例代码,你可以看到如何使用StringBuilder来高效地构建和修改字符串。