什么情况下用+运算符进行字符串连接比调用StringBuffer/StringBuilder对象的append方法连接字符串性能更好?
2016-03-08 15:14
786 查看
tring一旦赋值或实例化后就不可更改,如果赋予新值将会重新开辟内存地址进行存储。 而StringBuffer类使用append和insert等方法改变字符串值时只是在原有对象存储的内存地址上进行连续操作,减少了资源的开销。 因此我们得出结论:当需要进行频繁修改字符串的操作时先建立StringBuffer类对象进行操作, 将最后结果转化成String类对象返回,这样效率会高很多。 当然是用stringbuffer好了,因为string指向的字符串本身是不变的,在执行+的时候, 实际上是将该string名字指向了另外一个字符串,这样在执行多次+的时候就会浪费资源. 而stringbuffer始终指向一个串,变的是串的内容. String一旦赋值或实例化后就不可更改,如果赋予新值将会重新开辟内存地址进行存储。 而StringBuffer类使用append和insert等方法改变字符串值时只是在原有对象存储的内存地址上进行连续操作,减少了资源的开销。 因此我们得出结论:当需要进行频繁修改字符串的操作时先建立StringBuffer类对象进行操作,将最后结果转化成String类对象返回,这样效率会高很多。
关于String与StringBuffer的使用在各大网站都有说明了,因为String对象一旦创建是不能改变的,总的来说StringBuffer比String在效率上的优越的。
如果要对一个字符串进行多次连接操作,大多数情况下,初学者会使用“+”,而程序员会选用StringBuffer的append方法。
不过,这里还要介绍一种StringBuilder。在Thinking in Java书中也着重推荐了这个类,这个类在有些时候比StringBuffer运行更快。
首先是要区别他们两个:
StringBuffer是线程安全的
StringBuilder是线程不安全的
很明显,StringBuffer的系统开销要大,所以如果我们只有一个单线程,考虑速度的话,StringBuilder更好。
那为什么我们很少见到StringBuilder呢?原因很简单,因为我们有时候很难确定我们创建的系统会不会是多线程的,如果考虑到以后扩展的可能性,则更难确定,所以我们更愿意使用StringBuffer,因为它是线程安全的,不用担心以后扩展。
PS:本文转载自某人的博文和百度知道
顶
0
踩
相关文章推荐
- Android中GridView使用
- Swift 基础学习(枚举基本语法)
- nagios 安装配置(包含nrpe端)全 (三)
- Android项目:手机安全卫士(7)—— 手机防盗功能
- 走进OC-第一个OC程序
- iOS开发笔记--iOS之轻松上手block
- Android studio 导入eslipce工程(JNI多个so的情况 或者 普通工程)
- ios笔记-多线程相关(phread、NSThread、GCD、NSOperation)
- EasyVideoRecorder短视频拍摄、短视频录制SDK支持IOS版本
- iOS----------SDWebimage源码解析(3)
- android studio常见问题
- 【Android】Picasso加载本地图片如何清理缓存cache?
- iOS实现屏幕旋转
- ANDROID L - Material Design详解(动画篇)
- 【cocos2d 3.x】粒子plist的简单使用
- IOS之禁用UIWebView的默认交互行为
- 安卓自定义的渐变TextView
- Android canvas.save()和canvas.restore()的理解
- Android学习笔记之Fast Json的使用
- Android Studio常用快捷键(转)