Java中的String,StringBuilder,StringBuffer三者的区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cai131498/article/details/79972226
Java中的String,StringBuilder,StringBuffer三者的区别

    这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面。

1.首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer > String

  String最慢的原因:

  String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的

2. 再来说线程安全

  在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的

3. 总结一下
  String:适用于少量的字符串操作的情况

  StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况

  StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况

4. volatile关键字是否能保证线程安全
    任何被volatile修饰的变量,都不拷贝副本到工作内存,任何修改都及时写在主存。

因此对于Valatile修饰的变量的修改,所有线程马上就能看到,但是volatile不能保证对变量的修改是有序的。

比如多线程下 count++ 不能保证他的原子性。


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页