String、StringBuffer、StringBuild的区别与联系

本文从源码角度分析String、StringBuffer、StringBuilder的区别,包括它们的不变性、append方法、效率与线程安全性。在多线程环境下,推荐使用StringBuffer,而单线程环境下StringBuilder更高效。
摘要由CSDN通过智能技术生成

这是一个高频考点,一般面试也会遇到,接下来我们会从源码角度区分这三个的区别和实用场景

1.简单的分析

string: 点开源码。string用的是final类型,表明这个字符串不可变,并且实现了java.io.Serializable, Comparable, CharSequence三个方法。final类表明不能被继承、fina表示成员变量,一旦被修改赋值,就不能再次赋值,只能赋值一次。final方法不能被覆盖,但是能被继承。
在这里插入图片描述
stringbuffer和stringbuild: 点开源码。我们可以明显的看到这这块方法里面加了个同步锁,这个后面会说到加锁的意义。stringbuffer继承了AbstractStringBuilder类,实现了两个方法,这个和stringbuild都是一样的,他们两个在代码上的区别就是 : stringbuffer的append方法加锁和加了一个toStringCach清空缓存的方法。 而stringbuild这两个都没有。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下面是类的关系继承图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值