Java基础之String和Stringbuilder的区别
admin
2024-03-07 18:19:08

Java基础之String和Stringbuilder的区别

  • 一、可变性
  • 二、线程安全
  • 三、性能方面
  • 四、存储方面


一、可变性

  • String 不可变
  • StringBuffer 和 StringBuilder 可变

String内部的value值是final修饰的,所以它是不可变类。所以每次修改String的值,都会产生一个新的对象。
StringBuffer和StringBuilder是可变类,字符串的变更不会产生新的对象。

二、线程安全

  • String 不可变,因此是线程安全的
  • StringBuilder 不是线程安全的
  • StringBuffer 是线程安全的,内部使用 synchronized 进行同步

StringBuffer是线程安全的,因为它每个操作方法都加了synchronized同步关键字。
StringBuilder不是线程安全的,所以在多线程环境下对字符串进行操作,应该使用StringBuffer,否则使用StringBuilder

三、性能方面

String的性能是最的低的,因为不可变意味着在做字符串拼接和修改的时候,需要重新创建新的对象以及分配内存。
其次是StringBuffer要比String性能高,因为它的可变性使得字符串可以直接被修改。
最后是StringBuilder,它比StringBuffer的性能高,因为StringBuffer加了同步锁。

四、存储方面

String存储在字符串常量池里面,StringBuffer和StringBuilder存储在堆内存空间。

相关内容

热门资讯

为失能老人撑把“伞” (来源:河北新闻网)转自:河北新闻网1月11日,在邢台市南和区三思镇卫生院医养中心,养老照护员陪失能...
加沙多地遭以军袭击 造成多人死... 转自:财联社【加沙多地遭以军袭击 造成多人死伤】财联社1月17日电,据央视新闻,当地时间16日,总台...
药物受理最新动态:国药集团德众... 国家药品监督管理局药品审评中心数据显示,2026年1月17日,国药集团德众(佛山)药业有限公司的鸡骨...
药物受理最新动态:贵州汇正制药... 国家药品监督管理局药品审评中心数据显示,2026年1月17日,贵州汇正制药有限责任公司的抗宫炎软胶囊...
药物受理最新动态:Merck ... 国家药品监督管理局药品审评中心数据显示,2026年1月17日,Merck Healthcare KG...