A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始



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;
上面这种情况,就会多创建出来三个对象,造成了内存空间的浪费
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端

5 个回复

倒序浏览
懂了,原来如此,以前理解有点错误
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马