第四节 String、StringBuilder、StringBuffer

String、StringBuilder、StringBuffer

StringSitrngBufferStringBuilder
描述String是常量值是不可变的,导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量优先的内存空间,因为String类有final关键字StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量可变类,与StringBuffer用法相同,但是线程不安全,所以速度更快
线程安全安全不安全
不可变可变可变

因为StringBuffer与StringBuilder的基本用法相同本文只介绍一种

String类概述:是一个不可变的字符串
StringBuilder类概述:是一个可变的字符串。

StringBuilder类构造方法
    * StringBuilder(String str)   将不可变字符串转可变字符串

StringBuilder类成员方法
    * StringBuilder append(数据类型 变量名) 追加内容
    * String toString();  将可变字符串转为不可变字符串

String和StringBuilder的选择
    * 如果需要执行拼接操作,使用StringBuilder
    * 如果不需要执行拼接操作,则使用String

示例代码

public class StringBuilderDemo01 {
    public static void main(String[] args){
        // StringBuilder类基本使用
       test01();
       // String和StringBuilder字符串拼接性能测试
       test02();
    }
    
    // String和StringBuilder字符串拼接性能测试
    public static void test02(){
        long start = System.currentTimeMillis();
        String str = "abc";
        for (int i = 0; i < 10000 ; i++) {
            str+=i;
        }
        System.out.println(System.currentTimeMillis() - start); // 183
        start = System.currentTimeMillis();
        StringBuilder sb = new StringBuilder("abc");
        for (int i = 0; i < 10000 ; i++) {
            sb.append(i);
        }
        System.out.println(System.currentTimeMillis() - start); // 3
    }

    // StringBuilder类基本使用
    public static void test01(){
        // 字符串
        String str = new String("abc");
        // 执行字符串拼接
        str += "def";
        str += "xxx";
        str += 123;
        System.out.println(str);

        // 如果需要做大量的字符串拼接操作,则强烈推荐使用StringBuilder
        StringBuilder sb = new StringBuilder("abc");
        // 执行字符串拼接操作
        // 链式编程:如果一个方法的返回值类型仍然是一个引用数据类型,则可以继承调用该类型的方法。
        sb.append("def").append("xxx").append(123);
        System.out.println(sb.toString());
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值