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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© AtheerCHA 中级黑马   /  2015-1-9 20:00  /  1235 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这两个除了Stringbuilder线程不同步之外还有什么区别?

14 个回复

倒序浏览
StringBuilder是StringBuffer的升级版,StringBuilder类提供一个与 StringBuffer 兼容的 API,用法主要是提高了效率,多线程StringBuilder要手动加锁

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
围观大神吧。。。。
回复 使用道具 举报
最大亮点!!提高效率,如果是单线程,极力推荐Stringbuilder,当处理大数据的时候是相当明显的。
回复 使用道具 举报
1、StringBuilder:一个可变的字符序列,该类被与StringBuffer一样动态添加字符串,可以用在字符串缓冲区被单个线程使用的时候。单线程实例中它比 StringBuffer 要快。一般情况下,我们用StringBuilder主要替换StringBuffer的append和insert方法。append 方法始终将这些字符添加到生成器的末端;而insert方法则在指定的点添加字符。(用于单线程) 2、StringBuffer:线程安全的可变字符序列。可以动态添加字符串,能进行修改。(一般用于多线程) JDK升级三个因素:提高效率、简化书写、提高安全性。
回复 使用道具 举报
最大的不同就是一个同步一个不同,不过StringBuilder的效率更高, 如果没有用到线程同步尽量用StringBuilder
回复 使用道具 举报
进来学习学习
回复 使用道具 举报
以利亚 发表于 2015-1-10 10:07
1、StringBuilder:一个可变的字符序列,该类被与StringBuffer一样动态添加字符串,可以用在字符串缓冲区被 ...

这不是我在http://bbs.itheima.com/forum.php ... d=162795&extra=总回复的么?
回复 使用道具 举报
邓士林 发表于 2015-1-10 12:32
这不是我在http://bbs.itheima.com/forum.php?mod=viewthread&tid=162795&extra=总回复的么?

是的,成我的了!
回复 使用道具 举报
以利亚 发表于 2015-1-10 13:33
是的,成我的了!

共同学习,共同进步
回复 使用道具 举报
我们从源代码的角度来看它们两个的区别。我们就从使用最多的
  1. append(String str)
复制代码
  1. toString()
复制代码
方法来抽丝剥茧,投过现象看本质。

先说StringBuilder的代码

  1.     public StringBuilder append(String str) {
  2.         super.append(str);
  3.         return this;
  4.     }



  5.     public String toString() {
  6.         // Create a copy, don't share the array
  7.         return new String(value, 0, count);
  8.     }
复制代码


再来看看StringBuffer的源代码:

  1.     public synchronized StringBuffer append(String str) {
  2.         super.append(str);
  3.         return this;
  4.     }

  5.     public synchronized String toString() {
  6.         return new String(value, 0, count);
  7.     }
复制代码


从这些代码上,可以很容易地看到StringBuffer的方法都加了synchronized锁。但是StringBuilder的方法却没有。而有时别不需要锁(比如只一个方法内部使用),而此时使用StringBuffer会增加无用的锁,效率就会下降。此时,使用StringBuilder才是更好的选择。
回复 使用道具 举报
邓士林 发表于 2015-1-10 13:39
共同学习,共同进步

信息共享嘛,谁看就是谁的啦!:lol:P
回复 使用道具 举报
执笔画梦 来自手机 中级黑马 2015-1-10 17:49:17
13#
学习了。
回复 使用道具 举报
好多大神
回复 使用道具 举报
StringBuffer 和 StringBuilder 的区别:
StringBuffer线程安全。
StringBuilder线程不安全。
单线程操作,使用StringBuilder 效率高。
多线程操作,使用StringBuffer 安全。
好像就这些区别,看视频总结的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马