String、StringBuilder和StringBuffer的区别

String类
字符串是常量,他们的值被创建之后,不能被改变。
字符串的底层是一个被final修饰的数组,不能改变,是一个常量

 private final char value[];

StringBuilder类
字符串缓冲区,可以提高字符串的操作效率(看成一个长度可以变化的字符串)
底层是是一个没有被final修饰的数组。可以改变长度。线程不安全

//底层
 	 value = new char[capacity];
 	 //没有加同步
 	 public StringBuilder append(char[] str) {
        super.append(str);
        return this;
     }
 

StringBuffer类
和StringBuilder一样,就是方法添加了同步锁,所以线程安全

	//加了同步
 synchronized StringBuffer append(AbstractStringBuilder asb) {
        toStringCache = null;
        super.append(asb);
        return this;
    }

常用方法

 StringBuilder s2=new StringBuilder();
        //在末尾添加任意字符
        s2.append("abc");
        s2.append(99);
        s2.append('韩');
        //在指定位置添加字符
        s2.insert(0,"d");
        //删除指定位置
        s2.delete(0,1);

总结:
少量不改变使用String
单线程使用StringBuilder,因为他的速度快。
多线程使用StringBuffer,因为他是同步的,安全。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值