String : StringBuilder: StringBuffer的比较

一、

Strin和StringBuilder,StringBuffer最大的不同在于,前者是不可变的对象,因为在String的底层中使用final来修饰的,而Stringbuilder和Stringbuffer都是继承自AbstractStringBuilder,在AbstractStringBuilder中使用char[] 字符数组来保存子符串,但是没有使用final修饰,虽然String可以直接用+进行字符串的拼接,可是每次都会创造新的字符对象,且都是临时的对象,这就造成内存的浪费,影响效率;而StringBuilder和Stringbuffer则无需担心这个问题。

二、

StringBuilder和Stringbuffer是一个可变的对象,可以预存分配空间,在加入新字符串时,不会创造新的临时对象,而是直接操字符串本身;同时StringBuilder和Stringbuffer还可以进行链式调用,既可以不断调用自身的方法,因为append()方法会返回“this”。

	StringBuilder str2=new StringBuilder("今天天气不错空气更好");
        str.append("!").replace(0, 6, "天气很好呀");// 替换字符,从指定位置开始到指定位置结束
		System.out.println(str2);
		System.out.println("................");
//		删除字符  (方法一)
		str2.delete(5, 7);//从指定位置开始到指定位置结束
		System.out.println(str2);
		System.out.println("..............");
//		删除字符(方法二)
		str2.deleteCharAt(5);
		System.out.println(str2);
		System.out.println("..............");
		

三、

SringBuffer是比StringBuilder 更早的类,因为其使用了同步锁,所以相对与StringBuilder更具有安全性,但在提高安全性的同时却付出了性能的下降,所以后来又有了StringBuilder,它没有更高的安全性却更加高效。

四、

相同情况下,使用StringBuiler相比于StringBuffer能获得10%~15%左右的性能提高,但需要承担多线程不安全的风险。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值