补充——String、StringBuffer

在java中有3个类来负责字符的操作:
1、Character是对单个字符进行操作
2、String对一串字符进行操作,是不可变的
3、StringBuffer也是对一串字符进行操作,但是是可变类

——String
​​​​是对象不是原始类型
为不可变对象,一旦创建,不可修改
对于已经存在的String对象的修改都是创建一个新的对象,然后把新的值保存进去
String被final修饰,即不能被继承

——StringBuffer
是一个可变对象,只能通过构造函数来建立
    StringBuffer sb = new StringBuffer();
对他进行修改的时候不会像String那样重新建立对象
对象被建立后,在内存中就会分配内存空间,并初始保存一个null,向StringBuffer赋值的时候可以通过append()方法;

分别用String、StringBuffer进行字符串的连接操作

public class Test_1 {

    static final int TIMES = 10000;

    public static void stringReplace(String text){
        text = text + "c";
    }

    public static void buffetReplace(StringBuffer text){
        text = text.append("c");
    }

    public static void test_1(){
        String str = "abcdefghijklmnopqrstuvwxyz";
        int time = TIMES;
        long start = System.currentTimeMillis();
        String str2 = "";
        for(int i = 0;i < time;i ++){
            str2 += str;
        }
        long end = System.currentTimeMillis();
        long times = end - start;
        System.out.println(times);
    }

    public static void test_2(){
        String str = "aabcdefghijklmnopqrstuvwxyz";
        int time = TIMES;
        long start = System.currentTimeMillis();
        StringBuffer sb = new StringBuffer();
        for(int i = 0;i < time;i ++){
            sb.append(str);
        }
        long end = System.currentTimeMillis();
        long times = end - start;
        System.out.println(times);
    }

    public static void main(String[] args) {

        test_1();
        test_2();
        //4504
        //1




//        String textString = new String("java");
//        StringBuffer textStringBuffer = new StringBuffer("java");
//        stringReplace(textString);
//        buffetReplace(textStringBuffer);
//        System.out.println(textString + textStringBuffer);
    }
}

——字符串连接操作中,StringBuffer的效率比String高
String的连接操作:
通过建立一个StringBuffer,然后调用append(),最后再将StringBuffer转换成String
这样,String的连接操作就比StringBuffer多出了一些附加操作,效率降低
由于String对象是不可变对象,每一次操作String都会建立新的对象来保存新的值,这样原来的对象就没用了,会被垃圾回收,也会影响性能。

猜你喜欢

转载自blog.csdn.net/weixin_42479293/article/details/88380014