String,StringBuffer和StringBuilder
Posted a-fm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了String,StringBuffer和StringBuilder相关的知识,希望对你有一定的参考价值。
String,StringBuffer和StringBuilder分别应该在什么情况下使用?
String 是Java的字符串类,其实质上也是用Char类型存储的,但是除了hash属性,其他的属性都声明为了final类型.
因为其这样操作产生的不变性,带来了如下优点:
因为经常利用String存储的数据去做hash运算,将其设置为final则可以使hash值不变.
牵扯到享元的基础, 如果不设置为final类型的话,享元机制就无法使用.
String参数的不变性,天生带来线程安全, 可以在多个线程中安全的使用,而不用去加线程锁.
但是因为上述的方便只能牺牲一些东西,但是作为成年人一定要选择我都要,然后就产生了StringBuffer和StringBuilder.
StringBuffer和StringBuilder的产生使为了解决大量拼接字符串时产生很多中间对象的问题,而提供的个类.
但是为什么要有两个呢 ?
依然使线程问题, StringBuilder加了线程锁,在多线程的情况下可以安全使用,而只有单线程的情况下我们使用stringBuffer,它没有线程锁所以性能更高.
以上是关于String,StringBuffer和StringBuilder的主要内容,如果未能解决你的问题,请参考以下文章
(转)String,StringBuffer与StringBuilder的区别
Java常用类--String类(StringBuilder 和 StringBuffer)介绍
Java String, StringBuilder, StringBuffer