StringBuffer和StringBuilder的区别

String对象用来操作字符串,但是在操作多次的时候,String就不合适了,这时需要引入StringBuffer和StringBuilder;

StringBuffer:

StringBuffer是使用缓冲区的,方法是同步的,适合在多线程条件下使用,对于StringBuffer而言,本身是一个具体的操作类,所以不能像String那样采用直接赋值的方式进行对象实例化,必须通过构造方法完成。

StringBuffer的主要方法

序号方法描述
1public StringBuffer append(String s)
将指定的字符串追加到此字符序列。
2public StringBuffer reverse()
将此字符序列用其反转形式取代。
3public delete(int start, int end)
移除此序列的子字符串中的字符。
4public insert(int offset, int i)
将int参数的字符串表示形式插入此序列中。
5replace(int start, int end, String str)
使用给定String中的字符替换此序列的子字符串中的字符。

StringBuffer对象的初始化

StringBuffer s = new StringBuffer();

StringBuffer s = new StringBuffer(“abc”);

StringBuffer和String属于不同的类型,不能直接进行强制类型转换!

字符串连接

 StringBuffer buf = new StringBuffer() ;    // 声明StringBuffer对象 
        buf.append("Hello ") ;                    // 向StringBuffer中添加内容
        buf.append("World").append("!!!") ;        // 可以连续调用append()方法
        buf.append("\n") ;                        // 添加一个转义字符
        buf.append("数字 = ").append(1).append("\n") ;    // 添加数字
        buf.append("字符 = ").append('C').append("\n");     // 添加字符
        buf.append("布尔 = ").append(true) ;    // 添加布尔值
        System.out.println(buf) ;            // 直接输出对象,调用toString()

结果输出:
Hello World!!!
数字 = 1
字符 = C布尔 = true

StringBuilder

StringBuilder是StringBuffer的异步版本,如果不需要同步的话,应优先选择StringBuilder

StringBuilder的四个构造方法

	public StringBuilder()
	public StringBuilder(CharSequence seq)
	public StringBuilder(int capacity)
	public StringBuilder(String string)

如果在创建StringBuilder对象时没有指定大小,这个对象将拥有十六个字符的初始大小。如果内容超过了其容量,对象将自动增加大小。如果在创建前知道内容将会超过十六个字符,最好分配足够的空间,因为增加容量也会花费一定时间

StringBuilder有几个方法,主要有以下几个:

//获取StringBuilder对象的容量
public int capacity();

//获取StringBuilder对象所存储的字符串的长度
public int length();

//将指定的String对象添加到StringBuilder对象末尾,包括多种重载形式
public StringBuilder append(String string);
	
//在offset指定的位置插入指定字符串,包括多种重载形式
public StringBuilder insert(int offset,String string);

//返回一个String对象
public String toString();

//append方法继承了Appendable接口
//所以要实现append方法append方法StringBuilder类对几乎所有的基本类型都重载了append方法
append(boolean b)
append(char c)
append(char[] str)
append(char[] str,int offset,int len)
append(CharSequence s)
append(CharSequence s,int start,int end)
append(double d)
append(float f)
append(int i)
append(long lng)
append(Object obj)
append(String str)
append(StringBuffer sb)

//insert方法
//insert方法可以控制插入的起始位置,也几乎对所有的基本类型都重载了insert方法:
insert(int offser,boolean b)
insert(int offset,char c)
insert(int offset,char[] str)
insert(int index,char[] str,int offset,int len)
insert(int dsfOffset,CharSequence s)
insert(int dsfOffset,CharSequence s,int start,int end)
insert(int offset,double d)
insert(int offset,float f)
insert(int offset,int i)
insert(int offset,long l)
insert(int offset,Object obj)
insert(int offset,String str)

StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。

参考–百度百科

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Marblog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值