码迷,mamicode.com
首页 > 其他好文 > 详细

String,StringBuffer,StringBuilder的区别

时间:2018-11-13 02:55:45      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:eve   线程   行修改   单线程   安全   字符串   builder   修改   abstract   

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的区别

标签:eve   线程   行修改   单线程   安全   字符串   builder   修改   abstract   

原文地址:https://www.cnblogs.com/bin0721/p/9947718.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!