兽兽尊上的博客

人家比我优秀都那么勤奋,我们凭什么懒惰

根据源码总结String,StringBuffer,StringBuider差异

一,贴出三者的源码,做比较

String



StringBuffer



StringBuider



这样贴出来一目了然,差异很显然。下面总结归纳一下。

二,总结三者的差异

1,String, StringBuffer, StringBuilder 三者都实现了CharSequence接口,意思是这三者都是字符序列,他们的底层都是用char[]实现的,

2,但String和其他两者有很大的不同,String是不可变的,意思就是你在生成String对象后就不能改变其内部的char[]了,最初的char[]是什么就会一直是什么。这样设计的目的是简化存储(也就是String对象的共享)。
3,而StringBuffer, StringBuilder,则是可变的,意思是你在生成其对象后可以改变其内部的char[],比如扩容,插入,删除等,这两个类是用于动态创建字符串的。这两者都是继承于AbstractStringBuilder,也就是他们具有相同的API(调用方式相同),两者间的不同唯一就是StringBuffer是线程安全的(可用于并发环境),StringBuilder不是线性安全的(不能用于并发环境,如果使用,可能会出现问题)。当在单线程环境时最好使用StringBuilder,应为他不用检查对象锁,所以速度、效率要更高


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_30579779/article/details/49903495
个人分类: java
下一篇DateTimePicker控件只显示年份
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭