Java平台提供了两种类型的字符串:String和StringBuffer/StringBuilder,它们可以储存和操作字符串。

  其中String是只读字符串,也就意味着String引用的字符串内容是不能被改变的。而StringBuffer/StringBuilder类表示的字符串对象可以直接进行修改。

  StringBuilder是Java 5中引入的,它和StringBuffer的方法完全相同,区别在于它是在单线程环境下使用的,因为它的所有方法都没有被synchronized修饰,因此它的效率也比StringBuffer要高。

  1.三者在执行速度方面的比较:StringBuilder >  StringBuffer  >  String

  String:字符串常量,

  StringBuilder:字符串变量,线程非安全的

  StringBuffer:字符串变量,线程安全的

String和StringBuffer :

  String类对象不可变,StringBuffer类是可以通过Append()来修改值,一旦修改String的值就是隐形的重建了一个新的对象,释放了原String对象。

  String 性能比不上StringBuffer

  字符串连接String的+比StringBuffer的Append()性能差了很多

String:
  是对象不是原始类型.
  为不可变对象,一旦被创建,就不能修改它的值.
  对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.
  String 是final类,即不能被继承.

StringBuffer:
  是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象
  它只能通过构造函数来建立,
  StringBuffer sb = new StringBuffer();
  注意:不能通过赋值符号对他进行赋值. 
  sb = "welcome to here!";//error
  对象被建立以后,在内存中就会分配内存空间,并初始保存一个null.

  向StringBuffer中赋值的时候可以通过它的append方法.
  sb.append("hello");

  字符串连接操作中StringBuffer的效率要比String高:

  String覆盖了equals方法和hashCode方法,而StringBuffer没有覆盖equals方法和hashCode方法,所以,将StringBuffer对象存储进Java集合类中时会出现问题。

对于三者使用的总结:

  1.如果要操作少量的数据用 = String

  2.单线程操作字符串缓冲区下操作大量数据 = StringBuilder

  3.多线程操作字符串缓冲区下操作大量数据 = StringBuffer

转载于:https://www.cnblogs.com/mengchunchen/p/7890659.html

String、StringBuffer与StringBuilder的区别相关推荐

  1. String,StringBuffer与StringBuilder的区别

    String,StringBuffer与StringBuilder的区别 String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全 ...

  2. String,StringBuffer与StringBuilder的区别??

    2019独角兽企业重金招聘Python工程师标准>>> String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全 ...

  3. String,StringBuffer与StringBuilder的区别?

    http://blog.csdn.net/rmn190/article/details/1492013 String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuil ...

  4. String,StringBuffer与StringBuilder的区别以及String为什么是不可变的?

    String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要 ...

  5. String,StringBuffer和StringBuilder的区别

    一.可变性 不同于String类的不可变性,StringBuffer和StringBuilder都继承了抽象类AbstractStringBuilder,这个类用一个char数组来存储value. a ...

  6. php 有 stringbuffer,string,stringbuffer以及stringbuilder的区别

    string,stringbuffer以及stringbuilder的区别? 小编在一次电话面试中,被问过StringBuilder是线程安全的吗,脱口而出是安全的,结果人家质疑我你是2年开发经验吗. ...

  7. JavaSE(二十五)——String与StringBuffer、StringBuilder的区别、创建对象的几种方法、Http和Https的区别

    文章目录 1. String与StringBuffer.StringBuilder的区别 2. Java创建对象的几种方法 3. Http和Https的区别 1. String与StringBuffe ...

  8. String、StringBuffer和StringBuilder的区别

    String.StringBuffer和StringBuilder的区别: 文章目录 String StringBuffer StringBuilder StringBuffer是如何实现线程安全的呢 ...

  9. Java中String StringBuffer和StringBuilder的区别是什么

    String StringBuffer 和 StringBuilder 的区别是什么?String 为什么是不可变的? 可变性 简单的来说:String 类中使用 final 关键字修饰字符数组来保存 ...

  10. Java 之String、StringBuffer 和 StringBuilder 三者区别介绍

    String:字符串常量,字符串长度不可变,StringBuffer:字符串变量(Synchronized,即线程安全),StringBuilder:字符串变量(非线程安全). String Stri ...

最新文章

  1. java二维码生成与解析代码实现
  2. 利用OpenCV的threshold函数实现双阈值法二值化操作的源码
  3. EasyMock 使用方法与原理剖析
  4. C++ chrono 库中的 steady_clock 、 system_clock、high_resolution_clock区别
  5. 安卓清理垃圾清理代码_用方面清理代码
  6. redis中不同value类型的存取操作方式
  7. mysql 事务处理null_如何使用Mysql正确的处理财务数据
  8. 删除下拉框只找23火星软件_用Rhino秀个火星榨汁机?
  9. Rabbit MQ 延迟插件rabbitmq_delayed_message_exchange的安装
  10. easyui_datagrid模板代码
  11. Windows 下缺少依赖库问题解决
  12. 长等线,中等线,正等线,细等线,扁宋,扁等线
  13. linux电路图软件有哪些,新手福利,推荐一款好用的电路图绘制软件!
  14. 亚信安全发现勒索软件新变种 Word文档成为导火索
  15. GOODWELL写的绿色兵团的战友录
  16. 批量缩小多张图片尺寸,保持图片清晰无损
  17. 什么软件打印二维码和条形码?
  18. 从东京奥运会看js设计模式之发布订阅模式
  19. 服务器返回的常见http状态码
  20. dellwin10无法自动修复此计算机,处理win10系统无法自动修复此计算机的办法

热门文章

  1. hdu 4302 Holedox Eating 线段树去维护蛋糕!! 多校联合赛第三题
  2. 如何将 Mac 置入睡眠状态或唤醒 Mac?
  3. Xcode之developer tools access
  4. SVN客户端smartsvn详细功能
  5. webpack4.x实战六,处理图片
  6. 第三次作业N的阶乘以及第四次一维数组实现杨辉三角
  7. centos7搭建ELK Cluster集群日志分析平台(四):Fliebeat-简单测试
  8. WDS和DHCP配置说明
  9. 献给初学破解人的口诀和指令
  10. 极客唐小娟的故事-值得我们思考