String,StringBuffer,StringBuilder的区别

Posted bin0721

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了String,StringBuffer,StringBuilder的区别相关的知识,希望对你有一定的参考价值。

1.可变不可变

  String:是字符串常量,在修改时不会改变自身,若修改,等于重新生成新的字符串对象。

  StringBuffer:在修改时会改变对象自身,每次操作都是对StringBuffer对象自身进行修改,不是生成新的对象。使用场景:用于对字符串经常改变的情况下。主要方法有:                    append(),insert(),delete(),replace(),reverse()等。

2.线程是否安全

  String:对象定义后不可变,线程安全。

  StringBuffer:是线程安全的(对调用方法加入同步锁),执行效率较慢,适用于多线程下操作字符串缓冲区大量数据。

  StringBuilder:是线程不安全的,适用于单线程下操作字符串缓冲区大量数据。

3.共同点:

  StringBuilder和StringBuffer有共同的父类AbstractStringBuilder(抽象类)。

  StringBuilder和StringBuffer的方法都会调用AbstractStringBuilder中的公共方法,如super.append(...),只是StringBuffer会在方法上加上synchronized关键字进行同步。

  最后,如果程序不是多线程的,那么使用StringBuilder效率高于StringBuffer。

注:第一篇博文,不知道写点什么。就从网上以及资料上找到点java的基础知识以及自己所学到的和大家分享,彼此相互学习,也帮助自己回顾记忆。有不对的地方希望大家指正。

 

 

 

  

 

以上是关于String,StringBuffer,StringBuilder的区别的主要内容,如果未能解决你的问题,请参考以下文章

String,StringBuffer与StringBuilder的区别

(转)String,StringBuffer与StringBuilder的区别

重温java中的String,StringBuffer,StringBuilder类

Java常用类--String类(StringBuilder 和 StringBuffer)介绍

StringBuffer和StringBuilder类

StringBuffer的替换功能