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完全一样。