• 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
        }
    
  • 相关阅读:
    ajax工作原理
    ajax 和xmlHttpRequest区别
    ajax 基本语法
    javascript 中XMLHttpRequest 实现前台向后台的交互
    Javascript 中ajax实现前台向后台交互
    javascript 中函数eval()
    两道有趣的面试题
    linux 中的快捷键
    linux awk命令详解
    linux sed命令详解
  • 原文地址:https://www.cnblogs.com/chaoesha/p/13140729.html
Copyright © 2020-2023  润新知