关于String,StringBuilder的总结

来源:互联网 发布:me544j支持什么网络 编辑:程序博客网 时间:2024/06/05 19:43

关于String,StringBuffer与StringBuilder的区别有很多详细的阐述,比如这个帖子http://blog.csdn.net/rmn190/article/details/1492013(帖子1),但以现在的视角来看,这个帖子的内容并不是十分准确。

首先String有个这个概念:String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象。

关于String有另一个经典的问题,String s = a + b +c + d生成几个对象的问题。这个帖子http://blog.csdn.net/wgc461749883/article/details/38553787(帖子2)做了很详细的阐述。里面的例子也说了

String s = a + b + c + d 由于编译器的优化,最终代码实际上也是通过StringBuilder完成的

也就是说帖子1中的例子

String S2 = “This is only a”;
String S3 = “ simple”;
String S4 = “ test”;
String S1 = S2 +S3 + S4;

真正在执行时,由于编译器的优化执行这段代码效率跟StringBuilder是一致的。

但推荐该用StringBuilder时用StringBuilder,概念上不会混淆。


1 0
原创粉丝点击