String、StringBuffer和StringBuilder的区别
2017-07-25 13:21
344 查看
一、 三者的区别
1、String 不可变:有“final”修饰符
private
final char value[];
StringBuffer和StringBuilder可变:
均继承自AbstractStringBuilder类,在AbstractStringBuilder中使用字符数组保存字符串,可变。
char[] value;
2、StringBuffer加锁,所以线程安全,但是效率低
StringBuilder不加锁,所以线程不安全,但是效率高
效率排行榜
StringBuilder >StringBuffer > String
二、 String的特殊性
String str1 ="xiao ming "; // 字符串定义在静态区域。(存放静态成员 static定义的 大小有限)
String str2 = newString( "xiao ming "); // 字符串定义在动态区域即堆内存
——String缓冲池内不存在与其指定值相同的String对象,虚拟机将创建新String对象,存在则直接返回已存在的String对象的引用。
即先在静态区域找是否有值相同的对象,有则直接指向此变量。
1、String 不可变:有“final”修饰符
private
final char value[];
StringBuffer和StringBuilder可变:
均继承自AbstractStringBuilder类,在AbstractStringBuilder中使用字符数组保存字符串,可变。
char[] value;
2、StringBuffer加锁,所以线程安全,但是效率低
StringBuilder不加锁,所以线程不安全,但是效率高
效率排行榜
StringBuilder >StringBuffer > String
二、 String的特殊性
String str1 ="xiao ming "; // 字符串定义在静态区域。(存放静态成员 static定义的 大小有限)
String str2 = newString( "xiao ming "); // 字符串定义在动态区域即堆内存
——String缓冲池内不存在与其指定值相同的String对象,虚拟机将创建新String对象,存在则直接返回已存在的String对象的引用。
即先在静态区域找是否有值相同的对象,有则直接指向此变量。
相关文章推荐
- String,StringBuffer与StringBuilder的区别[转]
- String、StringBuffer与StringBuilder之间区别
- Java:String、StringBuffer和StringBuilder的区别
- String、StringBuffer与StringBuilder之间区别
- String、StringBuffer与StringBuilder之间区别
- String、StringBuffer与StringBuilder之间区别
- String、StringBuilder、StringBuffer三者的区别和联系
- String、StringBuffer、StringBuilder区别
- String,StringBuffer与StringBuilder的区别??
- String,StringBuffer,StringBuilder的区别
- String详解(二):StringBuilder和StringBuffer的区别
- String,StringBuilder,StringBuffer三者的区别
- java中String、StringBuffer、StringBuilder的区别
- Java基础之String,StringBuffer与StringBuilder的区别及应用场景
- String,StringBuilder和StringBuffer的区别
- Java笔记12: String,StringBuffer与StringBuilder的区别
- String、StringBuffer与StringBuilder之间区别
- String,StringBuilder,StringBuffer三者的区别
- String、StringBuffer和StringBuilder的区别
- String、StringBuffer与StringBuilder之间区别