您的位置:首页 > 产品设计 > UI/UE

String、StringBuilder、StringBuffer的区别

2016-03-03 20:30 316 查看
效率来说,大部分情况下,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没很大区别。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: