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与StringBuilder区别总结

String,StringBuffer与StringBuilder

String,StringBuffer与StringBuilder

Java String StringBuffer StringBuilder

String,StringBuffer与StringBuilder的区别

String,StringBuffer与StringBuilder的区别??