String、StringBuilder、StringBuffer的区别

效率来说,大部分情况下,String<StringBuffer<StringBuilder。String生成对象不可变,每次生成一个新的对象,再返回引用,可想而知,所以如果是字符串内容经常改变的不建议使用,有时候String a="ac"+"cd“(循环很多次)不会比StringBuffer的append方法慢。比如String a="abc";String b="def";String c=a+b的话效果就没那么好了;StringBuffer是线程安全的,效率也不错,如果是要考虑同步和效率兼得的话建议使用。StringBuilder是线程不安全的,所以速度StringBuilder的效率更高,建议用在方法里面,因为只能有单个线程能访问到,每个线程都有自己的方法栈,不需要考虑线程同步。后两者一般有append和insert等方法,或者可以用toString返回String对象。

如果不考虑多线程的问题,建议用StringBuilder然后用toString返回String对象。

ps:对于String来说,==和equals经常会认为==是比较对象的地址,而equals比较值,其实这条规则不全部适用于其他的继承于Object的类,因为String已经重写了Object的equals,使得它是比较值,所以这个规则可以自己重新定义。如果没有重写的话,Object子类的equals其实跟==是没有多大区别的。切记大部分实现都是重写了的,比如Interger这些包装也和String没很大区别。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值