String/StringBuffer/StringBuilder的区别
2016-03-05 12:44
323 查看
首先最大的区别是String是不可变的,而StringBuffer和StringBuilder是可变的
可以在源码中看到,String类是被定义为final的,而StringBuffer和StringBulider不是举个例子
String a="asd";//假设a指向了0x00001的地址
假如再 a="saf";//假设saf的地址是0x00002
此时,a是指向0x00002地址,而不是0x00001地址
a="saf"相当于新产生了一个String对象,而0x00001的“asd”对象还存在
而如果是用 StringBuilder或者StringBuffer进行上述操作,a还是指向0x00001地址,只是将其上的内容改了,并没有产生新的对象
其次String和StringBuffer是线程安全的,而StringBuilder是非线程安全的
String因为是定义为final的,所以是线程安全的,而StringBuffer加了同步锁,所以也是线程安全的。最后String是java.lang.String而StringBuffer和StringBuilder都是继承自AbstractStringBuilder(是一个抽象类)
所以StringBuffer和StringBulider拥有共同的方法,比如append相关文章推荐
- druid配置
- easy-UI作为页面展示的一个例子
- poj Seuence
- UILIB 加载XML
- uilib 自绘 标题栏
- getContentResolver().query()方法selection参数使用详解(转)
- UILIB 简单自绘BUTTON
- 安装Visio 2013 :安装程序找不到Office.zh-cn\osetupui.dll
- Android学习笔记----runOnUiThread
- Easyui修改样式
- NGUI 设置拖动区域(无需加BoxCollider)
- 需求 - 19 - 按钮图片文字上下居中
- 2015 UESTC Training for Dynamic Programming 男神的约会 BFS+状压DP
- 关于《UNIX环境高级编程(第三版)》中apue.h头文件的设置
- API Guides(七)—— Property Animation To Media Playback
- HDU 5063 Operation the Sequence(暴力)
- According to TLD or attribute directive in tag file, attribute value does not accept any expressions
- 解决UITableView最后几个Item显示不全
- 修改UISearchBar 背景
- UIVIew相关知识