现在的String操作究竟有没有必要用Stringbuilder、StringBuffer

现在的String操作究竟有没有必要用Stringbuilder、StringBuffer
1、性能不一样,大致速度StringBuilder > StringBuffer > String
2、再来说线程安全
   在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的
3、再来说说现在用+连接字符串与用StringBuilder拼接的事
这个其实就现在而言,也就是jdk1.5开始(StringBuilder出现),其实也就是从这时候起用+连接字符串实际就是用的StringBuilder拼接了。不信我们来上代码


先对比看看直接+连接class会是什么样,注意标红的地方

如果用jd-gui看class文件,会发现JVM直接将一行连+的字符串定义为一个字符串了。

从这里我们没有验证到多个String对象使用+连接是使用的StringBuilder,于是我们用jad命令将class文件转为字节码文件再看,那怎么转呢?
首先cmd,然后输入jad,如果看到

说明你的反编译环境是好的,其实只要在开发工具eclipse里安装过反编译插件,这里就可以直接用的。
然后我们输入命令
jad -o -a -s d.java E:\workspaces\oxyGen\20180103\Aps2\build\classes\test\study\StudyTypeChange.class
出现:

这里没有指定输出目录一般会在用户目录下,例如:

最后用文本工具打开查看

到此我们就get到了,所以说现在字符串对象的+实际就是StringBuilder,那么中间的一些String实际上是要被GC回收的,显然这样做性能就慢了。
至于 StringBuilder > StringBuffer这个应该大家都知道,StringBuffer加了锁来保证线程安全,那肯定就会慢那么一丢丢。
其实我现在看StringUtil的源码,在疑惑为什么它不用StringBuffer线程安全的而用StringBuilder?



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肥仔哥哥1930

来一波支持,吃不了亏上不了当

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值