黑马程序员技术交流社区

标题: String, StringBuffer StringBuilder的区别。 [打印本页]

作者: wgc    时间: 2016-10-13 01:03
标题: String, StringBuffer StringBuilder的区别。


String 的长度是不可变的;

StringBuffer的长度是可变的,如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用 StringBuffer,如果最后需要 >String,那么使用 StringBuffer 的 toString() 方法;线程安全;

StringBuilder 是从 JDK 5 开始,为StringBuffer该类补充了一个单个线程使用的等价类;通常应该优先使用 StringBuilder 类,因>为它支持所有相同的操作,但由于它不执行同步,所以速度更快。
使用字符串的时候要特别小心,如果对一个字符串要经常改变的话,就一定不要用String,否则会创建许多无用的对象出来.
来看一下比较

String s = "hello"+"world"+"i love you";
StringBuffer Sb = new StringBuilder("hello").append("world").append("i love you");
这个时候s有多个字符串进行拼接,按理来说会有多个对象产生,但是jvm会对此进行一个优化,也就是说只创建了一个对象,此时它的执行速度要比StringBuffer拼接快.再看下面这个:

String s2 = "hello";  
String s3 = "world";  
String s4 = "i love you";  
String s1 = s2 + s3 + s4;
上面这种情况,就会多创建出来三个对象,造成了内存空间的浪费

作者: 李孝志    时间: 2016-10-13 01:28
懂了,原来如此,以前理解有点错误
作者: 蓝光四号    时间: 2016-10-13 07:22
总结的不错

作者: barny    时间: 2016-10-13 11:12
不错不错继续分享

作者: mhp5498    时间: 2016-10-13 12:52
理解了,顶

作者: mafu1993    时间: 2016-10-13 12:55






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2