三者都实现了CharSequence接口,因此CharSequence可认为是一个字符串的协议接口

1.String类是不可变类,即一旦一个String对象被创建后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁;

我们常常定义的时候 String str=new String("定义了我");

str=“改变了我”;

输出是改变了我,好像是Str已经改变了,其实是改变了str的指向,原来堆内存里的对象成为了垃圾

2.StringBuffer类

StringBuffer代表一个字符序列可变的字符串,当一个StringBuffer建立以后,通过inser()、appen()、reverse()、serChaAt()、setLength()方法可以改变这个字符串,最终生成以后,可以通过toString()方法转换为一个String对象

3.StringBuilder是JDK1.5新增的,也代表字符串对象,和StringBuffer相似,两个类的构造器和方法也基本相同,当时StringBuffer是线程安全的,StringBulider没有实现线程安全,所以性能略高。因此,如果创建一个字符可变的字符串对象,则应该优先考虑StringBuilder类

比较

1.执行速度方面三者有如下关系:

StringBuilder>StringBuffer>String;

2.:一、长度都是可扩充的;二、StringBuffer是线程安全的,StringBuilder是线程不安全的。那么他们的长度是如何实现动态扩充以及StringBuffer的线程安全是如何实现的呢?

三者都实现了CharSequence接口,因此CharSequence可认为是一个字符串的协议接口

StringBuffer里面所有的方法除了构造方法以外都由synchronized限定

它们两个可扩展长度则是通过ensureCapacity(int minimumCapacity)来验证当前长度是否小于参数minimumCapacity,如果成立则进行分配空间。分配新空间的步长为(当前长度+1)的两倍。

php 有 stringbuffer,String、StringBuffer、StringBulider三者介绍相关推荐

  1. String StringBuffer StringBuilder区别与联系

    String     StringBuffer     StringBuilder String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量 ...

  2. String StringBuffer StringBuilder的区别

    简单的事情做到极致也是一种能力. 首先,说一下目前我还没进行整理的情况下,我的理解: String 不可修改 修改后相当于又新创建创建一个字符串 比如: String a = "abc&qu ...

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

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

  4. Java String,StringBuilder和StringBuffer的区别 StringBuilder StringBuffer String

    可以证明,字符串操作是计算机程序设计中最常见的行为. String:不可变的对象,对String对象进行改变的时候其实都等同于生成了一个新的String对象,然后将引用指向新的String对象,原St ...

  5. String, StringBuffer, StringBuilder(转载)

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

  6. String,StringBuffer,StringBuilder区别

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

  7. String,StringBuffer与StringBuilder的区别?

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

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

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

  9. String,StringBuffer,StringBulider 三者的区别

    1.String 是字符串常量,StringBuffer 和StringBuilder 是字符串变量. 2.运行速度 StringBuilder > StringBuffer > Stri ...

最新文章

  1. 青少年编程竞赛交流群周报(第040周)
  2. AI复原上海民国名媛影像!1929年的小姐姐,时装精致不输现在
  3. 语言模型“不务正业”做起目标检测,性能还比DETR、Faster R-CNN更好 | Hinton团队研究...
  4. 怎样学会科学的调研并启动一个项目
  5. Myeclipse中快速插入HttpServlet子类中doGet和doPost方法
  6. PMP之项目整合管理---各种工具与技术
  7. 电大计算机应用基础网考小抄,电大计算机应用基础网考资料小抄.doc
  8. [读书笔记]Ajax的通信方式 (一)
  9. 解决办法:GTK+ 2.x symbols detected
  10. 【2018-2019 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) E】Cops And Roobers【最小割】
  11. c51语言跑马灯键盘程序,单片机按键控制跑马灯程序
  12. BS架构与CS架构的区别(最详细)
  13. 如果本地连接受限或无连接的解决方法
  14. 【剖析 | SOFARPC 框架】系列之SOFARPC序列化比较
  15. 作业中关于H5中动画的实现——animation
  16. High Availability for the HDFS Namenode
  17. 安装xmanager linux系统,xmanager linux版
  18. C++Primer(5th) Notes - 2.1 基本内置类型
  19. SEBASTIEN KWOK 2022春夏系列发布
  20. windows10批量修改文件后缀名

热门文章

  1. 构建和运行Java 8支持
  2. 调查内存泄漏第2部分–分析问题
  3. 将亚型多态性与通用多态性相关联的危险
  4. 业务活动监视器(BAM)2.0带来的革命
  5. 什么是Spring Integration?
  6. OSGI –模块化您的应用程序
  7. Cajo,用Java完成分布式计算的最简单方法
  8. Linux 下如何查找 MySQL 数据库的数据根目录呢?
  9. java 网络编程 方式_JAVA网络编程
  10. lisp文字上标源码_创建文本/标注样式源码 - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - Powered by Discuz!...