Java中StringBuilder和StringBuffer的append(Object obj)方法使用

使用字符串String连接,方式有以下几种方式

1、用 “+” 加号连接字符串,如

String s = String0 + String1 + String2 + String3 + String4;

 这里使用反编译工具,最终发现代码也是通过StringBuilder.append(连接)

 

 

2、使用 “+=”

String s = new String();
s += String0;
s += String1;
s += String2;
s += String3;
s += String4;

 

 

3、使用StringBuffer的append(Object) 

 

StringBuffer stringBuffer = new StringBuffer();
String s = stringBuffer.append(String0).append(String1).append(String2)
        .append(String3).append(String4).toString();

 

 

4、使用StringBuilder的append(Object) 

 

StringBuilder stringBuilder = new StringBuilder();
String s = stringBuilder.append(String0).append(String1).append(String2)
        .append(String3).append(String4).toString();

 

一般说来,

StringBuffer是线程安全的

StringBuilder是线程不安全的

 

 

JavaAPI中提到

 

 

StringBuffer
线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。
虽然在任意时间点上它都包含某种特定的字符序列,
但通过某些方法调用可以改变该序列的长度和内容。

可将字符串缓冲区安全地用于多个线程。
可以在必要时对这些方法进行同步,
因此任意特定实例上的所有操作就好像是以串行顺序发生的,
该顺序与所涉及的每个线程进行的方法调用顺序一致。

 

 

 

StringBuilder
一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,
但不保证同步。
该类被设计用作 StringBuffer 的一个简易替换,
用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。
如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。

 

 

 

StringBuffer与StringBuilder的append(Object) 的方法

 

1、StringBuffer的append(Object Obj)源码

public synchronized StringBuffer append(Object obj) {
    super.append(String.valueOf(obj));
    return this;
}

 API中的方法说明

追加 Object 参数的字符串表示形式。
参数将被转换成字符串,就好象使用了 String.valueOf 方法一样。
然后,将所得字符串中的字符追加到此序列。

 

2、StringBuilder的append(Object Obj)源码

public StringBuilder append(Object obj) {
    return append(String.valueOf(obj));
}

  API中的方法说明

追加 Object 参数的字符串表示形式。
参数将被转换成字符串,就好象使用了 String.valueOf 方法一样。
然后,将所得字符串中的字符追加到此序列。

 

无论使用StringBuffer还是StringBuilder的append(Object obj)方法,

最终调用的都是String的valueOf(Object Obj)方法

 

而当对象为null时,调用String.valueOf(Object obj)返回的是"null" 字符串

 

所以在使用 StringBuffer或者StringBuilder做Object对象连接时,要注意Object是否为null

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值