java入门(二十九) | API(三)之StringBuilder/StringBuffer

java入门(二十九) | API(三)之StringBuilder/StringBuffer

StringBuilder/StringBuffer

1.1 特点

1、 封装了char[]数组
2、 是可变的字符序列
3、 提供了一组可以对字符内容修改的方法
4、 常用append()来代替字符串做字符串连接
5、 内部字符数组默认初始容量是16:super(str.length() + 16);
6、 如果大于16会尝试将扩容,新数组大小原来的变成2倍+2,容量如果还不够,直接扩充到需要的容量大小。
int newCapacity = value.length * 2 + 2;

1.2 常见方法

append()

1.3 练习:测试字符串连接效率

package cn.qile.stringdemo;

//测试字符串拼接效率
public class Test2_String {
    public static void main(String[] args) {
//     method();// 用+拼接字符串
        method2();// 用工具类优化拼接效率
    }

    // 用工具类优化拼接效率
    private static void method2() {
        String str = "abcdefghijklmnopqrstuvwxyz";

        // 拼接指定字符串10000次
//     String result = "";// 记录拼接结果
        StringBuffer sb = new StringBuffer();

        long start = System.currentTimeMillis();// 获取当前的毫秒值
        for (int i = 0; i < 10000; i++) {
//         result = result + str;// +拼接
            sb.append(str);
        }
        long end = System.currentTimeMillis();// 获取当前的毫秒值
        System.out.println(end - start);// 给程序计时,3ms
    }

    // 用+拼接字符串
    private static void method() {
        String str = "abcdefghijklmnopqrstuvwxyz";

        // 拼接指定字符串10000次
        String result = "";// 记录拼接结果

        long start = System.currentTimeMillis();// 获取当前的毫秒值
        for (int i = 0; i < 10000; i++) {
            result = result + str;// +拼接
        }
        long end = System.currentTimeMillis();// 获取当前的毫秒值
        System.out.println(end - start);// 给程序计时,2428ms
    }

}
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » java入门(二十九) | API(三)之StringBuilder/StringBuffer