Java基础---StringBuffer类详解

本文详细介绍了Java中的StringBuffer类,它用于处理可变的字符串缓存,提供了动态扩展容量和各种字符串操作的方法,如append()、insert()、delete()等。相比String类,StringBuffer在频繁的字符串修改操作中更高效,避免了大量临时对象的创建,有助于优化内存使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

与String类不同,StringBuffer类表示长度和内容动态可变的字符串缓存。它有两个基本参数:长度和容量,长度即StringBuffer对象所表示的字符串长度;容量是StringBuffer对象所拥有的内存空间大小。比如,某个StringBuffer对象容量是100,但它存放的字符串长度可能仅为10,程序员可直接对缓存进行插入、修改、删除、替换等操作,操作结果会影响串对象。比之传统的字符,StringBuffer能自动管理字符串占用的内存空间,减轻程序员的负担。
StringBuffer的构造方法如下:

  • public StringBuffer():构造一个不带字符的字符串缓存,初始容量为16字符。
  • public StringBuffer(int capacity):构造一个不带字符,但指定初始容量的字符串缓存。
  • public StringBuffer(String str):构造一个字符串缓存,并将其内容初始化为指定的字符串内容。该字符串的初始容量为16加上字符串参数长度。
    StringBuffer的常用方法如下:
  • StringBuffer append():向缓存内添加新的字符串。
  • StringBuffer insert(int offset,String str):在字符串的offset位置插入字符串str。
  • StringBuffer delete(int start,int end):删除字符串中从start开始一直到索引end-1处结束的子字符串。
  • StringBuffer reverse():将字符序列逆序。
    String与StringBuffer的区别:
    (1)String代表字符串常量,Java程序中的所有字符串字面值(如"abc")都作为此类的实例实现,它们的值在创建之后不能更改;StringBuffer代表可变字符序列,即一个字符串缓存,通过方法(如append()/insert()/delete/replace等)调用可改变字符串序列的长度和内容。
    (2)String重写了从Object继承的equals()方法,而StringBuffer没有重写,例如:
`String s1=new String("hello");
String s2=new String("hello");
System.out.println(s1.equals(s2));//true
StringBuffer sb1=new StringBuffer("hello");
StringBuffer sb2=new StringBuffer("hello");
System.out.println(sb1.equals(sb2));//false`

(3)String对象之间可以用操作符“+”进行连接,而StringBuffer对象不可以,但可以使用append()方法连接,例如:

String s3=new String("Spring");
String s4=new String("Hibernate");
System.out.println(s3+s4);//SpringHibernate
StringBuffer sb3=new StringBuffer("Spring");
StringBuffer sb4=new StringBuffer("Hibernate");
System.out.println(sb3.append(sb4));//SpringHibernate

(4)String可以比较大小,而StringBuffer不可以,必须先转成String再比较。
(5)通常一个字符串使用String便于进行大小比较、结构分析等,但若该字符串有频繁的插入、删除、修改等操作,会产生大量的临时String对象,内存消耗极大,这种情况就应该StringBuffer,实际应用中应根据需要随时在两者之间切换
例:测试StringBuffer类的常用方法append()、insert()、delete()等。

package helloworld;

public class TestStringBuffer {
	public static void main(String args[]) {
String s="123";
char a[]= {'a','b','c'};
StringBuffer sb1=new StringBuffer(s);
sb1.append("spring").append("strust").append("hibernate");
System.out.println(sb1);//123springstrusthibernate
StringBuffer sb2=new StringBuffer("China");
for(int i=0;i<10;i++) {
	sb2.append(i);
}
System.out.println(sb2);//China0123456789
sb2.delete(5,sb2.length());
System.out.println(sb2);//China
sb2.insert(3, a);
System.out.println(sb2);//Chiabcna
System.out.println(sb2.reverse());//ancbaihC
}}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值