StringBuffer类与StringBuilder类、String,StringBuffer,StringBuilder三者的区别

StringBuffer

引入:
我们之前学的String类,每次拼接一个字符串,系统都为之开辟一个新的内存空间,这样既耗时又占用了大量的空间,StringBuffer就可以出来处理这个问题,它是一个字符串缓冲区。
StringBuffer类概述:
线程安全的可变字符序列。一个类似于String的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容
StringBuffer 的特点:
1.线程安全的可变序列
2.通过某些方法调用可以改变该序列的长度和内容
3.字符串缓冲区

构造方法:
StringBuffer():构造一个其中不带字符的字符串缓冲区,初始容量为16个字符。
StringBuffer(CharSequence seq):构造一个字符串缓冲区,它包含与指定CharSequence 相同的字符
StringBuffer(int capacity): 构造一个不带字符,但具有指定初始容量的字符串缓冲区
StringBuffer(String str):构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容
成员方法:
增 :
StringBuffer append(String str)
StringBuffer insert(int offset, String str)
删 :
StringBuffer deleteCharAt(int index)
StringBuffer delete(int start, int end)
改:
public StringBuffer replace(int start,int end,String str)
其他:
public StringBuffer reverse()
public String substring(int start)
public String substring(int start,int end)

StringBuilder

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

String、StringBuffer、StringBuilder三者的区别

经典面试题解析:
String,StringBuffer,StringBuilder三者的区别。

String 和 StringBuffer,StringBuilder的区别:
String的特点: 线程不安全, 一旦在方法区创建就不会被更改,可以给多个引用共享,在做大量字符串拼接的时候效率低
StringBuffer,StringBuilder 可以改变变字符串的长度和内容,是一个字符串缓冲区,在做大量字符串拼接的时候不会开辟新的空间
StringBuffer,StringBuilder的区别
StringBuffer线程安全的,效率低 ,是旧的类,在JDK1.0推出。
StringBuilder线程不安全的,效率高 ,是新的类,在JDK1.5推出。

StringBuilder
public StringBuilder append(StringBuffer sb) {
    super.append(sb);
    return this;
}

@Override
public StringBuilder append(CharSequence s) {
    super.append(s);
    return this;
}

StringBuffer
@Override
public synchronized StringBuffer append(Object obj) {
    toStringCache = null;
    super.append(String.valueOf(obj));
    return this;
}

@Override
public synchronized StringBuffer append(String str) {
    toStringCache = null;
    super.append(str);
    return this;
}

你可能感兴趣的:(JavaSE,常用类)