String、StringBuffer 与StringBuilder
2018-03-30 12:16
375 查看
(接上文)3、String、StringBuffer 与StringBuilder String 字符串常量
StringBuffer 字符串变量(线程安全)
StringBuilder 字符串变量(非线程安全)看一个栗子:用字符数组value创建一个String对象 private final String(char[] value);1 char[] value = {"a","b","c","d"};
2 String str4 = new String(value);//相当于String str4 = new String("abcd");
字符串的本质是字符数组,因为有final修饰,所以String类的对象是不可改变的。所以每次修改String对象的值时,实际上是生成了一个新的对象,而指针指向了新的String对象;所以经常改变内容的字符串最好不要用 String ,因为只要改变就会变成新的对象,创建对象的过程是很消耗性能的,每次生成对象都会对系统性能产生影响。
StringBuffer:如果是使用 StringBuffer 类则结果就不一样了,每次结果都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,再改变对象引用。 字符串对象经常改变的情况下推荐使用 StringBuffer类。String的大多数方法StringBuffer都可以使用,除此之外还增加了String没有的插入和删除字符串的方法。
StringBuffer buf=new StringBuffer("abc");
String s1=buf.toString(); //转换为String类
buf.append("abc"); //在字符串后面追加abc ,相当于String中 +“abc”
buf.insert(0,"abc"); //在开头位置插入abc
buf.delete(0,5) //删除下标从0到5且不包含5的字符
StringBuffer 字符串变量(线程安全)
StringBuilder 字符串变量(非线程安全)看一个栗子:用字符数组value创建一个String对象 private final String(char[] value);1 char[] value = {"a","b","c","d"};
2 String str4 = new String(value);//相当于String str4 = new String("abcd");
字符串的本质是字符数组,因为有final修饰,所以String类的对象是不可改变的。所以每次修改String对象的值时,实际上是生成了一个新的对象,而指针指向了新的String对象;所以经常改变内容的字符串最好不要用 String ,因为只要改变就会变成新的对象,创建对象的过程是很消耗性能的,每次生成对象都会对系统性能产生影响。
StringBuffer:如果是使用 StringBuffer 类则结果就不一样了,每次结果都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,再改变对象引用。 字符串对象经常改变的情况下推荐使用 StringBuffer类。String的大多数方法StringBuffer都可以使用,除此之外还增加了String没有的插入和删除字符串的方法。
StringBuffer buf=new StringBuffer("abc");
String s1=buf.toString(); //转换为String类
buf.append("abc"); //在字符串后面追加abc ,相当于String中 +“abc”
buf.insert(0,"abc"); //在开头位置插入abc
buf.delete(0,5) //删除下标从0到5且不包含5的字符
buf.setCharAt(1,’D’); //则对象buf的值将变成”aDc”
StringBuilder 被设计用作 StringBuffer 的一个简易替换,两者的方法基本相同,由于没有对方法进行加同步锁,所以它是非线程安全的。但在字符串缓冲区被单个线程使用的时候,处理的效率更高。相关文章推荐
- String StringBuilder StringBuffer 对比 总结得非常好
- String详解, String和CharSequence区别, StringBuilder和StringBuffer的区别 (String系列之1)
- String、StringBuffer、StringBuilder三者之间的区别
- String、StringBuffer与StringBuilder之间区别
- 关于String 和 StringBuffer、StringBuilder
- String、StringBuffer、StringBuilder的共同点于不同点
- String、StringBuffer、StringBuilder的区别
- String、StringBuffer与StringBuilder之间区别
- String 和StringBuffer和StringBuilder
- String、StringBuilder和StringBuffer的区别
- String、StringBuffer与StringBuilder之间区别
- Java中的String,StringBuilder,StringBuffer三者的区别
- String,StringBuffer与StringBuilder的区别?
- String和StringBuilder、StringBuffer的区别?
- String,StringBuffer与StringBuilder的区别??
- JDK 1.7源码阅读笔记(一)String,StringBuilder,StringBuffer
- String,StringBuffer与StringBuilder的区别!!
- String,StringBuffer与StringBuilder的区别
- String,StringBuffer与StringBuilder的区别??
- java String、StringBuffer、StringBuilder