Java中的StringBuilder和StringBuffer用法与区别

Java中的StringBuilder和StringBuffer用法与区别

StringBuilder和StringBuffer的区别:
StringBuilder:非线程安全的,并发处理的,性能稍快
StringBuffer:线程安全的,同步处理的,性能稍慢

1- String

由于String是不变对象,每次修改内容都会创建新的对象,因此String不适合频繁修改操作,为了解决这个问题,java提供了StringBuilder类。

2- StringBuilder

StringBuilder是专门用于修改字符串的一个类,内部维护一个可变的char数组,所做操作都是在这个数组之上进行的,修改速度、性能非常优秀,并且提供了修改字符串的常见方式:增、删、改、插

举例如下

public class StringStringBuilderDemo {
    public static void main(String[] args) {
        StringBuilder s = new StringBuilder("a");
        for(int i=0;i<10000000;i++) { //1000万次
            s.append(i);
        }
        System.out.println("执行完毕");

        /*
        // String不适合频繁修改内容(效率低)
        String s = "a";
        for(int i=0;i<10000000;i++){ //1000万次
            s = s+i; // 每次修改都会在内存中分配新的对象
        }
        System.out.println("执行完毕");
         */
    }
}


//StringBuilder的演示
public class StringBuilderDemo {
    public static void main(String[] args) {
        String str = "JavaTest";
        
        StringBuilder builder = new StringBuilder(str);

        builder.append(",JavaTest2");
        System.out.println(builder); 

        // replace():替换部分内容(含头不含尾)
        // 将下标为9到15的内容替换为---就是为了改变世界
        builder.replace(0,3,"JAVA");
        System.out.println(builder); 

        // delete():删除部分内容(含头不含尾)
        builder.delete(0,3); // 删除下标为0到7的
        System.out.println(builder);

        // insert():插入内容
        builder.insert(0,"Java666"); // 在下标为0的位置插入活着
        System.out.println(builder); 
    }
}

3 - StringBuffer

StringBuffer和StringBuilder的使用基本一致


版权声明:本文为weixin_44188105原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。