Java基础——String、StringBuiler、StringBuffer的用法和区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Katherine_java/article/details/82021054

1.区别

1.1 三者本质区别

String:每次增加数据都会开辟新空间,存储数据,将上一块空间通过GC进行回收

StringBuiler、StringBuffer:是可变长度,数据增加是直接在现有空间进行操作

1.2 StringBuiler StringBuffer区别

非线程安全 StringBuiler:

线程安全 StringBuffer:多线程中建议使用

2.用法

2.1 三者用法

String str ="abc1";
str += "jk";
StringBuilder str2 = new StringBuilder("abc2");
str2.append("jk");
StringBuffer str3 = new StringBuffer("abc3");
str3.append("jk");

2.2 具体示例

package com.java8.string0824;

public class Test1 {

    public static void main(String arg[]){

        // 1.String
        // 每次增加数据都会开辟新空间,存储数据,将上一块空间通过GC进行回收
        // 循环过程中:开辟1000个空间,销毁999次
        long startTime = System.currentTimeMillis();
        String str ="abc1";
        System.out.println(str);
        for (int i = 0; i < 1000; i++) {
            str += "jk";
        }
        System.out.println(str);
        long endTime = System.currentTimeMillis();
        System.out.println(endTime - startTime);


        // 2.StringBuilder
        // 是可变长度,数据增加是直接在现有空间进行操作
        // 不会开辟和销毁新空间
        // 仅仅在现有空间中,增加数据
        long startTime2 = System.currentTimeMillis();
        StringBuilder str2 = new StringBuilder("abc2");
        System.out.println(str2);
        for (int i = 0; i < 1000; i++) {
            str2.append("jk");
        }
        System.out.println(str2);
        long endTime2 = System.currentTimeMillis();
        System.out.println(endTime2 - startTime2);

        // 3.StringBuffer
        // 是可变长度,数据增加是直接在现有空间进行操作
        // 不会开辟和销毁新空间
        // 仅仅在现有空间中,增加数据
        long startTime3 = System.currentTimeMillis();
        StringBuffer str3 = new StringBuffer("abc3");
        System.out.println(str3);
        for (int i = 0; i < 1000; i++) {
            str3.append("jk");
        }
        System.out.println(str3);
        long endTime3 = System.currentTimeMillis();
        System.out.println(endTime3 - startTime3);
    }
}

结果:

3.String、StringBuiler、StringBuffer的运行速度

StringBuile > StringBuffer > String

4.PS

String:针对少量的字符串操作

StringBuiler、StringBuffer:大量字符串操作使用另外两个

猜你喜欢

转载自blog.csdn.net/Katherine_java/article/details/82021054