Java 基础之 String、StringBuilder、StringBuffer、CharSequence 区别
2016-01-06 15:12
856 查看
1.CharSequence是一个java接口,代表一个char序列,String、StringBuilder、StringBuffer都实现了该接口,CharSequence实例通过调用toString方法可转化为String对象。
2.String类是final的,不可派生子类,其内部封装的是char[],另外,android下的String类和jdk中的String类是有区别的,android下的String类中部分API通过native方法实现,效率相对高一些。
3.String使用'+'进行字符串拼接时,在编译期会转化为StringBuilder#append方式
4.String在内存中有一个常量池,两个相同的串在池中只有一份实例(String s = "abc"方式或者String#intern方式会在池中分配),使用new
String方式会在heap中分配,每次创建都是一个全新的实例。
5.StrigBuilder
& StringBuffer都是可扩展的串,提供了一系列apped方法用于拼接不同类型对象
6.StringBuffer
于jdk1.0引入,线程安全(多线程场景下使用),StringBuilder于jdk1.5引入,线程不安全,因而效率更高。
7.StringBuilder
& StringBuffer初始容量都为16,开发者应该指定其容量,以避免多次扩容所带来的性能问题。
2.String类是final的,不可派生子类,其内部封装的是char[],另外,android下的String类和jdk中的String类是有区别的,android下的String类中部分API通过native方法实现,效率相对高一些。
3.String使用'+'进行字符串拼接时,在编译期会转化为StringBuilder#append方式
4.String在内存中有一个常量池,两个相同的串在池中只有一份实例(String s = "abc"方式或者String#intern方式会在池中分配),使用new
String方式会在heap中分配,每次创建都是一个全新的实例。
5.StrigBuilder
& StringBuffer都是可扩展的串,提供了一系列apped方法用于拼接不同类型对象
6.StringBuffer
于jdk1.0引入,线程安全(多线程场景下使用),StringBuilder于jdk1.5引入,线程不安全,因而效率更高。
7.StringBuilder
& StringBuffer初始容量都为16,开发者应该指定其容量,以避免多次扩容所带来的性能问题。
相关文章推荐
- IOS开发 把长度不等的UICollectionView 的cell 居左
- 关于UITableView的性能优化(历上最全面的优化分析) ...
- leetcode95 Unique Binary Search Trees II
- leetcode96 Unique Binary Search Trees
- BlockingQueue的使用
- 给UILabel中的文字加删除线
- Ubuntu Builder —— 一个制作自己的发行版的工具
- tasklet和workqueue的选择
- 将CodedUI Test 放到控制台程序中,模拟鼠标键盘操作
- 将CodedUI Test 放到控制台程序中,模拟鼠标键盘操作
- 关于xcode7.2以后 Build Settings Linking 默认没有 Other Linker Flags选项的解决方法
- IOS中UIScrollView的contentSize、contentOffset和contentInset属性
- UIImage 图片处理:截图,缩放,设定大小,存储
- iOS UIPageControl(分页控制器) 用法总结
- UIAlertView的简单用法
- UIImagePickerController本地化控件文字
- UITableViewCell - 4种显示格式
- arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf、gnueabi区别
- crm高速开发之QueryExpression
- 浅析NGUITools.DestroyImmediate和NGUITools.Destroy的区别