1、总引:

当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

从这段话中,可以读出两点:

1)在修改自身对象时,String是不可变的,StringBuffer和StringBuilder是可变的;

2)同是可变下,StringBuffer是线程安全的(适用多线程),而StringBuilder则有速度优势(适用单线程)。

2、String和StringBuffer可变和不可变

public static void main(String args[]){String str = "hello";StringBuffer strBuffer = new StringBuffer();strBuffer.append(" world");System.out.println(str.getClass() + "@" + str.hashCode());System.out.println(strBuffer.getClass() + "@" + strBuffer.hashCode());str = "jason";strBuffer.append(" and jason");System.out.println(str.getClass() + "@" + str.hashCode());System.out.println(strBuffer.getClass() + "@" + strBuffer.hashCode());  }

结果:String的地址已改变,对象已经改变为另一个;StringBuffer地址不变,还是同样的对象。

class java.lang.String@99162322
class java.lang.StringBuffer@131204848
class java.lang.String@100897019
class java.lang.StringBuffer@131204848

3、适用场景

1)如果要操作少量的数据用 String; 
2)多线程操作字符串缓冲区下操作大量数据 StringBuffer; 
3)单线程操作字符串缓冲区下操作大量数据 StringBuilder。

Java之String、StringBuffer、StringBulider辨识相关推荐

  1. 【翻译】Java中String, StringBuffer, StringBuilder的区别

    2019独角兽企业重金招聘Python工程师标准>>> String 是  Java 中最重要的类之一,并且任何刚开始做Java编程的人,都会 用String定义一些内容,然后通过著 ...

  2. Java之String,StringBuffer,StringBuilder

    1.String 在 Java 中,字符串被作为 String 类型的对象处理. String 类位于 java.lang 包中.默认情况下,该包被自动导入所有的程序.String 对象创建后则不能被 ...

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

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

  4. java中 String StringBuffer StringBuilder的区别

    * String类是不可变类,只要对String进行修改,都会导致新的对象生成. * StringBuffer和StringBuilder都是可变类,任何对字符串的改变都不会产生新的对象. 在实际使用 ...

  5. Java中String,StringBuffer,StringBuilder的区别

    String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 运行速度 StringBuilder > StringBuffe ...

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

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

  7. 2.Java中String,StringBuilder以及StringBuffer的关系与区别

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

  8. 重温java中的String,StringBuffer,StringBuilder类

    不论什么一个系统在开发的过程中, 相信都不会缺少对字符串的处理. 在 java 语言中, 用来处理字符串的的类经常使用的有 3 个: String.StringBuffer.StringBuilder ...

  9. 浅谈 Java 字符串(String, StringBuffer, StringBuilder)

    我们先要记住三者的特征: String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 一.定义 查看 API 会发现,String ...

最新文章

  1. Windows下solr的安装与部署
  2. linux 信号量锁 内核,Linux内核中锁机制之信号量、读写信号量
  3. 如何写出更好的代码(文末有福利)
  4. 阿里云搭建nacos
  5. 【英语学习】【Daily English】U02 Daily Routine L03 Tuesday night is curry night
  6. python 集合(set)
  7. Redis底部的几种存储结构(sds、dict、ziplist、intset、skiplist)
  8. bzoj4552[HEOI2016/TJOI2016]排序(二分+线段树)
  9. 屏蔽网站广告的Chrome谷歌浏览器插件推荐和下载地址
  10. 关闭ntp服务的 monitor monlist,解决漏洞CVE-2013-5211
  11. 前后端分离的项目部署到tomcat_阿里聚石塔部署前后端分离项目
  12. sha1校验工具android,Android 正式版与测试版签名(MD5,SHA1,SHA256)以及忘记keystore的应用正式版签名获取...
  13. MFC工具箱中各种控件
  14. 【论文阅读|深读】RolNE: Improving the Quality of Network Embedding with Structural Role Proximity
  15. CoinCola可盈可乐研究院2月报 | 加密货币集体上涨
  16. 传奇关于首饰盒装备系统“十二生肖”“五行八卦”等脚本实例
  17. iOS/iPhone 微信打开doc xls文件报错OfficeImportErrorDomain错误912 打不开文档
  18. mybatis报错 Invalid bound statement (not found)
  19. windows7经典开机音乐_Windows 7正式退休,微软出手,网友含泪告别情怀:感谢11年陪伴...
  20. python ftp上传/下载文件,带进度条显示

热门文章

  1. 存货编码数字_用友T3软件存货编码与存货代码有什么不同?
  2. linux 之 rpm 网站
  3. 3.17-3.18 HDFS2.x中高级特性讲解
  4. Zabbix监控Nginx性能状态
  5. 2014年湖北省TI杯大学生电子设计竞赛论文格式
  6. 数据库迁移之从oracle 到 MySQL
  7. InnoDB与MyISAM引擎区别
  8. ubuntu11.10设置了pppoe(自动拨号后),开机速度慢和无法连接无线网都解决办法...
  9. Redhat7.4安装Oracle11g详细步骤
  10. Android驱动中的Kconfig文件与Makefile文件