Java中String、StringBuffer、StringBuilder的区···

发布时间:2025-09-02 01:41:50 作者:益华网络 来源:undefined 浏览量(0) 点赞(0)
摘要:1.从是否可变的角度 String类中使用字符数组保存字符串,因为有“final”修饰符,所以String对象是不可变的。

1.从是否可变的角度

String类中使用字符数组保存字符串,因为有“final”修饰符,所以String对象是不可变的。

StringBuffer和StringBuilder都继承自AbstractStringBuilder类,在AbstractStringBuilder中也是使用字符数组保存字符串,但没有“final”修饰符,所以两种对象都是可变的。

2.是否多线程安全

String中的对象是不可变的,也就可以理解为常量,所以是线程安全的。

AbstractStringBuilder是StringBuffer和StringBuilder的公共父类,定义了一些字符串的基本操作,如append、、indexOf等公共方法。

StringBuffer对方法加了同步锁(synchronized) ,所以是线程安全的。看如下源码:

StringBuilder并没有对方法进行加同步锁,所以是非线程安全的。如下源码:

3.StringBuffer和StringBuilder的共同点

StringBuffer和StringBuilder有公共父类AbstractStringBuilder(抽象类)。

StringBuffer、StringBuilder的方法都会调用AbstractStringBuilder中的公共方法,如上面的两段源码中都调用了super.append(str); 只是StringBuffer会在方法上加synchronized关键字,进行同步。

http://shenzhen.offcn.com/

二维码

扫一扫,关注我们

声明:本文由【益华网络】编辑上传发布,转载此文章须经作者同意,并请附上出处【益华网络】及本页链接。如内容、图片有任何版权问题,请联系我们进行处理。

感兴趣吗?

欢迎联系我们,我们愿意为您解答任何有关网站疑难问题!

您身边的【网站建设专家】

搜索千万次不如咨询1次

主营项目:网站建设,手机网站,响应式网站,SEO优化,小程序开发,公众号系统,软件开发等

立即咨询 15368564009
在线客服
嘿,我来帮您!