StringBuilder, Stringbuffer,StringJoiner

StringBuilder

StringBuilder 代表可变字符串对象,相当于是一个容器,里面装的字符串是可以改变的,就是用来操作字符串的。
StringBuilder 比String更适合做字符串的修改操作,效率更高,代码更加的简洁。
在这里插入图片描述

public class HelloWorld {
    public static void main(String[] args) {
        StringBuilder s1 = new StringBuilder();
        StringBuilder s2 = new StringBuilder("abc");
        s1.append("abc");
        s1.append("123");
        s1.append("哈哈哈");
        s1.append(true);
        System.out.println(s1);//abc123哈哈哈true;

        s2.append("123").append("哈哈哈").append(true);
        System.out.println(s2);//abc123哈哈哈true;

        s1.reverse();//字符串反转
        System.out.println(s1);//eurt哈哈哈321cba;

        System.out.println(s1.length());//13 返回字符串的长度

        System.out.println(s1.toString());//转为String类型

    }
}

StringBuilder 是可变的,对字符串的修改不会产生新的对象

public class HelloWorld {
    public static void main(String[] args) {
        StringBuilder s1 = new StringBuilder();
        System.out.println(System.identityHashCode(s1));//1324119927
        s1.append("abc");
        s1.append("123");
        s1.append("哈哈哈");
        System.out.println(System.identityHashCode(s1));//1324119927



    }
}

变量改变前后对像的哈希地址并没有发生改变,表明修改是在原对象上进行的

StringBuilder 是非线程安全的,这意味着在多线程环境中同时访问和修改它可能会导致数据不一致。

StringBuffer

StringBuffer 是一个线程安全的可变字符串类,所有的方法都是同步的。这意味着在多线程环境中可以安全地使用 StringBuffer。
比 StringBuilder,性能稍差,因为同步机制增加了开销。
其构造器和方法与StringBuilder 类似。

StringJoiner

StringJoiner 是 Java 8 引入的一个类,用于构建由定界符分隔的字符串序列。它提供了一种方便的方式来连接字符串,并允许指定前缀和后缀。
在这里插入图片描述

public class HelloWorld {
    public static void main(String[] args) {
        StringJoiner s = new StringJoiner(",","[","]");
        s.add("123");
        s.add("hhh");
        s.add("哈哈哈");
        System.out.println(s);//[123,hhh,哈哈哈]

        System.out.println(s.length());//13


    }
}
总结

StringBuilder:适用于单线程环境中需要频繁修改字符串的场景,具有高效的性能。
StringBuffer:适用于多线程环境中需要频繁修改字符串的场景,线程安全但性能稍逊于 StringBuilder。
StringJoiner:适用于需要构建带定界符的字符串序列的场景,提供了简洁的 API 来处理前缀、后缀和分隔符。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
StringBufferStringBuilderStringJoinerJava中用于字符串拼接的工具类,它们在使用方式和特点上有一些区别。 1. StringBuffer: - 线程安全:StringBuffer是线程安全的,可以在多线程环境下使用。 - 可变性:StringBuffer是可变的,可以通过调用其方法来修改字符串内容。 - 同步访问:StringBuffer的方法大多数是使用synchronized关键字进行同步的,因此在多线程环境下可以保证操作的原子性。 - 性能较低:由于需要考虑线程安全,所以在性能方面稍弱于StringBuilder。 2. StringBuilder: - 线程不安全:StringBuilder不是线程安全的,不适合在多线程环境下使用。 - 可变性:StringBuilder是可变的,可以通过调用其方法来修改字符串内容。 - 非同步访问:StringBuilder的方法没有使用synchronized关键字进行同步,因此在单线程环境下具有更高的性能。 - 性能较高:由于不需要考虑线程安全,所以在性能方面较优于StringBuffer。 3. StringJoiner: - 字符串拼接:StringJoiner提供了一种方便的方式来拼接多个字符串,可以指定分隔符、前缀和后缀。 - 不可变性:StringJoiner本身是不可变的,每次拼接操作都会生成一个新的StringJoiner对象。 - 简洁性:StringJoiner在处理多个字符串拼接时,代码更加简洁明了。 总结来说,如果在单线程环境下进行字符串拼接,且不需要考虑线程安全问题,可以使用StringBuilder来获得更好的性能。如果在多线程环境下进行字符串拼接,或者需要考虑线程安全问题,可以使用StringBuffer。而StringJoiner则适用于需要拼接多个字符串,并且希望代码简洁明了的情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值