StringBuffer类概述及其构造方法

StringBuffer类概述

1、如果我们对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题

2、线程安全的可变字符序列

StringBuffer的区别:

1、线程安全的 不安全,就是存在同步操作同一数据的行为,效率高 安全的时候,没有同步操作,效率不高

在开发中,效率和安全一直都是很难平衡的事情。 生活中有哪些线程安全的例子: 线程安全的例子: 银行的一些业务,医院取号,电影院售票 线程不安全的例子:视频会员,博客评论

2、线程安全,可变的字符序列。 3、字符串缓冲区就像一个String ,但可以修改。 4、在任何时间点,它包含一些特定的字符序列,但可以通过某些方法调用来更改序列的长度和内容。

简单记忆:StringBuffer是一个线程安全的可变字符串

StringBuffer与String的区别:

1、StringBuffer的长度和内容都是可以发生改变的,String不可变 2、String每创建一个新的字符串都会开辟一个新的内存空间 StringBuffer可以提前给出一个容量,可以进行字符串的拼接,而不会重新开辟

StringBuffer的构造方法:

StringBuffer() 构造一个没有字符的字符串缓冲区,初始容量为16个字符。 StringBuffer(int capacity) 构造一个没有字符的字符串缓冲区和指定的初始容量。 StringBuffer(String str) 构造一个初始化为指定字符串内容的字符串缓冲区。

StringBuffer中的方法:

public int capacity() 返回当前容量

public class StringBufferDemo1 {
    public static void main(String[] args) {
        //StringBuffer() 构造一个没有字符的字符串缓冲区,初始容量为16个字符。
        StringBuffer sb1 = new StringBuffer();
        System.out.println("sb1:" + sb1); //StringBuffer重写的toString()方法
        int capacity = sb1.capacity();//查看StringBuffer的容量
        System.out.println("StringBuffer的容量: " + capacity);
        int length = sb1.length(); //
        System.out.println("StringBuffer中字符串的长度: " + length);

        System.out.println("**************************************************");

        //StringBuffer(int capacity) 构造一个没有字符的字符串缓冲区和指定的初始容量。
        StringBuffer sb2 = new StringBuffer(50);
        System.out.println("sb2:" + sb2); //StringBuffer重写的toString()方法
        int capacity2 = sb2.capacity();//查看StringBuffer的容量
        System.out.println("StringBuffer2的容量: " + capacity2);
        int length2 = sb2.length(); //
        System.out.println("StringBuffer2中字符串的长度: " + length2);

        System.out.println("**************************************************");
        //StringBuffer(String str) 构造一个初始化为指定字符串内容的字符串缓冲区。
        StringBuffer sb3 = new StringBuffer("hello");
        System.out.println("sb3:" + sb3);
        int capacity3 = sb3.capacity();
        System.out.println("StringBuffer3的容量: " + capacity3); // 16+5
        int length3 = sb3.length(); //
        System.out.println("StringBuffer3中字符串的长度: " + length3);
    }
}