String,Stringbuffer,StringBuilder 的区别

本文比较了Java中的String、StringBuffer和StringBuilder在可变性、线程安全、性能和存储方面的特点,推荐在频繁操作时使用StringBuffer或StringBuilder,非线程环境下优先选择StringBuilder以提高效率。
摘要由CSDN通过智能技术生成

提示:以下是本篇文章正文内容,下面案例可供参考
查完资料总结一下,关于String、StringBuffer、StringBuilder的区别,可以从多个角度来看。

一、是否可变

String:String内部的value值是final修饰的,因此不可变。每次修改String的值,并没有真正改变原来的值,而是产生了一个新的对象。
StringBuffer:可变,字符串的变更不会产生新的对象。
StringBuilder:可变,字符串的变更不会产生新的对象。

二、是否线程安全

String:因为String不可变,所以它是线程安全的。
StringBuffer:StringBuffer的每个操作方法都加了synchronized,因此是线程安全的。
StringBuilder:StringBuilder不是线程安全的。

三、性能

String:由于String不可变,在做字符串拼接和修改操作时需要创建新的对象和分配内存,因此String性能最低。
StringBuffer:StringBuffer的字符串可以直接被修改,所以StringBuffer的性能高于String。
StringBuilder:StringBuilder比StringBuffer的性能高,因为StringBuffer加了同步锁。

四、存储

String:String存储在字符串常量池中。
StringBuffer:存储在堆内存空间。
StringBuilder:存储在堆内存空间。

其他

StringBuffer:JDK1.0声明。
StringBuilder:JDK5.0声明。
三者在jdk8及之前底层都使用char[],在jdk9及之后都使用byte[]。

总结

要频繁对字符串进行增、删、改等操作时,建议使用StringBuffer或StringBuilder,因为String效率太低。
当不涉及到线程安全问题,建议使用StringBuilder。因为使用StringBuilder效率高。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值