StringBuilder

发布时间 2023-09-09 11:49:22作者: SimpleWord
title: StringBuilder和StringBuffer
index_img:  https://picss.sunbangyan.cn/2023/07/30/stdtw2.jpg
tags:
  - Java SE
  - 字符串
categories:
  - Java SE
hide: false
excerpt: StringBuilder、常用方法、链式编程

StringBuilder

StringBuilder的内容是可变的。可以提高字符串的操作效率。(如大量拼接字符串,不会产生无用的对象)

构造方法

public StringBuilder();
public StringBuilder(String str);

常用方法

转为String对象

public String toString();

添加数据

public StringBuilder append(任意类型); //添加数据,返回本身

反转内容

public StringBuilder reverse();

println()方法会自动调用对象的toString()方法来获取其字符串表示形式,但是sb还是StringBuilder类型。

System.out.println(sb.toString());效果等于 System.out.println(sb);

public class Test {
    public static void main(String[] args) {
        String str = "Hello!";
        StringBuilder sb = new StringBuilder(str);
        
        sb.append("java");
        sb.append(",go");
        System.out.println(sb.toString()); //Hello!java,go
        
        sb.reverse();
        str = sb.toString();
        System.out.println(str); //og,avaj!olleH
    }
}

链式编程

当我们在调用一个方法的时候,不需要用变量接收他的结果,可以继续调用其他方法

String类不支持链式编程。String类是不可变的,这意味着一旦创建了一个String对象,就无法修改它的。

上方代码可以简化为

public class Test {
    public static void main(String[] args) {
        String str = new StringBuilder("Hello!").append("java").append(",go").reverse().toString();
        System.out.println(str); //og,avaj!olleH
    }
}

StringBuffer

线程安全(方法加了synchronized),多线程使用

方法于StringBuilder完全一样。