一、
String类缺少字符串的修改功能,所以提供了StringBuffer类。
StringBuffer要像普通的类那样进行对象的创建,然后进行调用方法的处理;
- 构造方法:public StringBuffer();
- 构造方法:public StringBuffer(String s); // 可以接收初始化的内容
- 数据追加:public StringBuffer append(数据类型 变量); //可以是任何类型的数据,并且因为返回值是StringBuffer,所以可以进行无限的追加,append()相当于字符串中的" + "操作
package Demo_2_3_StringBuffer; public class Main { public static void main(String[] args) { StringBuffer sb = new StringBuffer("Hi!"); // 接收初始化内容的构造方法 change(sb); System.out.println(sb); } public static void change(StringBuffer tem){ // 改变字符串 tem.append("HelloWolrd!"); } }
输出结果:
输入可以使用字符串的修改,但是在实际情况中并不会使用得特别多,只是保证在字符串的修改功能上不会出现空缺。
String中字符串的"+"在编译后都变成了StringBuffer的append()方法,并且StringBuffer和String类的对象之间本来就可以互相转换:
- String类对象变为StringBuffer类可以依靠StringBuffer的构造方法或者使用append()方法;
- 所有的类对象都可以通过toString()方法转换为String类型。
在StringBuffer类中还提供了一些String类中,没有的方法:
- 插入数据:public StringBuffer insert(int offset,数据类型b);
public class Main {
public static void main(String[] args) {
StringBuffer buf = new StringBuffer();
buf.append(".com").insert(0,"www.").insert(4,"baidu"); // 指定索引位置插入数据
System.out.println(buf);
}
}

- 删除指定范围的数据: public StringBuffer delete(int start, int end);
public class Main { public static void main(String[] args) { StringBuffer buf = new StringBuffer(); buf.append(".com").insert(0,"www.").insert(4,"baidu"); // 指定索引位置插入数据 System.out.println(buf); buf.delete(0,5); // 删除指定索引范围的数据 System.out.println(buf); } }
- 内容反转:public StringBuffer reverse( );
package Demo_2_3_StringBuffer; public class Main { public static void main(String[] args) { StringBuffer sb = new StringBuffer("Hi!"); // 接收初始化内容的构造方法 change(sb); System.out.println(sb); StringBuffer buf = new StringBuffer(); buf.append(".com").insert(0,"www.").insert(4,"baidu"); // 指定索引位置插入数据 System.out.println(buf); buf.delete(0,5); // 删除指定索引范围的数据 System.out.println(buf); buf.reverse(); System.out.println(buf); // 字符串的反转 } }
在JDK1.5以后出现了一个与StringBuffer类功能相同的类--StringBuilder,那么两者的区别是什么呢?
StringBuffer类中的方法属于线程安全的,全部使用了synchronized关键字定义,而StringBuilder类属于非线程安全类。
面试题:
请解释String、StringBuffer、StringBuilder的区别?
- String类是字符串的首选类型,其最大的特点是内容不允许修改;
- StringBuffer 与 StringBuilder类的内容允许修改;
- StringBuffer是在JDK1.0的时候提供的,属于线程安全类,而StringBuilder是在JDK1.5的时候提供的,属于非线程安全类。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)