String StringBuilder StringBuffer 的区别? 什么情况下用“+”运算符进行字符串连接比调用 StringBuffer/StringBuilder对象的 append(代
Posted 墨尘无雪
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了String StringBuilder StringBuffer 的区别? 什么情况下用“+”运算符进行字符串连接比调用 StringBuffer/StringBuilder对象的 append(代相关的知识,希望对你有一定的参考价值。
String 、StringBuilder 、StringBuffer 的区别?
什么情况下用“+”运算符进行字符串连接比调用 StringBuffer/StringBuilder对象的 append 方法连接字符串性能更好?.
String类是不可变的(fianl修饰的),对象一旦被创建,就不能被修改;可以使用=直接赋值,此时使用常量池;也可以使用new创建,不使用常量池;
适用于少量的字符串操作。
StringBuffer是可变的,对象创建后,可以修改;必须使用new关键字;适用于单线程下在字符串缓冲区进行大量操作
StringBuilder是不安全的,在单线程情况下使用比StringBuffer高
必须使用new关键字 适用于多线程下在字符串缓冲区进行大量操作。
如果使用少量的字符串操作,使用(+运算符)连接字符串;
如果频繁的对大量字符串进行操作,则使用:
1:全局变量或者需要多线程支持则使用StringBuffer;
2:局部变量或者单线程不涉及线程安全则使有StringBuilder。
public static void main(String[] args) {
StringBuffer a,b,c;
// StringBuffer 会在原来的地址上的值进行操作 只要不new新的地址引用,就还是那个地址
//那么append后 值会变,所以原引用地址的值会变
//string 会开辟一个新的空间
a =new StringBuffer("hello world");
b = a;
b.append("good");
c = b;
b = new StringBuffer("well");
//a和c没有new引用地址不变,在原基础上变化
//b new 引用地址改变
System.out.println(a); //hello world good
System.out.println(b); //well
System.out.println(c); //hello world good
}
以上是关于String StringBuilder StringBuffer 的区别? 什么情况下用“+”运算符进行字符串连接比调用 StringBuffer/StringBuilder对象的 append(代的主要内容,如果未能解决你的问题,请参考以下文章
String,StringBuffer与StringBuilder
String,StringBuffer与StringBuilder
Java String StringBuffer StringBuilder