Java基础之String,StringBuilder,StringBuffer
2016-03-08 23:59
471 查看
在创建字符串的时候总是习惯性的使用String str = "...";,str = str+"abcd";也有听说过StringBuffer,StringBuilder,但是压根就没想过要去了解过。
String乍一看创建的很方便,其实在字符串比较多的时候或者说创建了多个字符串的时候就会出现很大的问题,因为String在新创建字符串的时候是在内存里面新开辟了一块内存去存储这个字符串,因为String是静态的,之所以我们看起来是动态的,那是因为JVM把我们欺骗了,在内存里面其实是存在了新的对象,所以其运行的速度可想而知了。但是StringBuffer和StringBuilder就不一样了。
StringBuffer和StringBuilder是动态的,StringBuffer buffer= new StringBuffer("StringBuffer"); buffer.append("abcd"); 在这个过程中并没有去新建新的StringBuffer对象。所以他们的读写速度基本上是String的十倍或数十倍。
StringBuffer和StringBuild的差异在于一个是线程安全的一个是不安全的,StringBuffer是线程安全的,StringBuilder是线程不安全的。就像HashTable和HashMap一样,他们分别使用在不同的场合。StringBuffered使用在多线程里面保证同步数据的安全性,StringBuilder使用在单线程里面保证读写的迅速。
String乍一看创建的很方便,其实在字符串比较多的时候或者说创建了多个字符串的时候就会出现很大的问题,因为String在新创建字符串的时候是在内存里面新开辟了一块内存去存储这个字符串,因为String是静态的,之所以我们看起来是动态的,那是因为JVM把我们欺骗了,在内存里面其实是存在了新的对象,所以其运行的速度可想而知了。但是StringBuffer和StringBuilder就不一样了。
StringBuffer和StringBuilder是动态的,StringBuffer buffer= new StringBuffer("StringBuffer"); buffer.append("abcd"); 在这个过程中并没有去新建新的StringBuffer对象。所以他们的读写速度基本上是String的十倍或数十倍。
StringBuffer和StringBuild的差异在于一个是线程安全的一个是不安全的,StringBuffer是线程安全的,StringBuilder是线程不安全的。就像HashTable和HashMap一样,他们分别使用在不同的场合。StringBuffered使用在多线程里面保证同步数据的安全性,StringBuilder使用在单线程里面保证读写的迅速。
相关文章推荐
- Android基础UI之ListView注意点
- 【ios】关于UIImageView的一个坑
- UITextfile属性方法大全
- IOS学习 UITableView 基本属性
- 《NumPy Beginner's Guide》笔记Chapter1
- 自定义UITableViewCell(registerNib: 与 registerClass: 的区别)
- leedCode 334 Increasing Triplet Subsequence
- *LeetCode 96. Unique Binary Search Trees
- [leetcode 255] Verify Preorder Sequence in Binary Search Tree ---先序遍历验证二叉搜索树
- 运用Runtime全局修改UILabel的默认字体
- removing-guest-session-at-login-in-ubuntu-14-04
- 315.Count of Smaller Numbers After Self My Submissions Question
- 快速排序(Quick Sort)
- UIButton 的基本用法
- 21. 手势识别之UITapGestureRecognizer
- 去掉UItableview headerview黏性(sticky)
- ***LeetCode 95. Unique Binary Search Trees II
- IOS-UITableViewStyle设置Group、Plain问题
- UI笔记2
- UITextView实现图文混排效果