码迷,mamicode.com
首页 > 移动开发 > 详细

String 、StringBuilder 、StringBuffer 的区别? 什么情况下用“+”运算符进行字符串连接比调用 StringBuffer/StringBuilder对象的 append 方法连接字符串性能更好?.

时间:2020-06-16 14:51:02      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:info   引用   连接   常量   div   string   hello   print   空间   

 

 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 方法连接字符串性能更好?.

标签:info   引用   连接   常量   div   string   hello   print   空间   

原文地址:https://www.cnblogs.com/chaoesha/p/13140729.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!