String,StringBuffer, StringBuilder 的区别到底是什么?
来源:互联网 发布:淘宝销售授权书模板 编辑:程序博客网 时间:2024/04/29 14:38
这个问题,在现在的面试中,笔试中经常遇到,这个问题可能很多人都能回答,String是不可变的,StringBuffer和StringBuilder是可变的,在有大量的字符串操作时使用StringBuffer或者StringBuilder,StringBuffer相对于StringBuilder是线程安全的。这样的回答是没有错的。很多java面试宝典上的答案都是这么一句答案,这么答也没错。至于缺少点什么我也不知道,但是总觉得缺少点什么。以前去参加面试时面试官也问过我这么一个问题,不过别人好像对我说的答案不太满意。好吧,估计是没有说到重点吧,扯远了。
我们都知道String是一个final类,至于StringBuffer和StringBuilder类呢,其实他们也是一个final类
String.class
- public final class String implements java.io.Serializable, Comparable<String>, CharSequence
StringBuffer.class
- public final class StringBuffer extends AbstractStringBuilder implements java.io.Serializable, CharSequence
但是另外两个类的char[]数组没有被定义为final,虽然他们本身是final类,他们定义的变量不能指向其它对象,但是他们本身char[]是可以改变的。并且他们自身也提供了对char[]的操作。
char[]长度不够时,调用了Arrays.copyOf(value, newCapacity);最终还是调用了System.arraycopy
如果用String来进行字符串的连接,那么会创建出很多的对象。特别是在大循环里对字符串直接使用+来进行连接,如果使用StringBuffer或者StringBuffer来进行字符串的拼接,使用append方法,对其操作即直接操作对象指向的引用,没有建立过多的对象,底层都是对char[]的操作
以上都是在不涉及到反射。
- String,StringBuffer, StringBuilder 的区别到底是什么?
- String,StringBuffer, StringBuilder 的区别到底是什么?
- String,StringBuffer, StringBuilder 的区别是什么?
- String 、StringBuffer 、StringBuilder区别是什么?
- String、StringBuffer、StringBuilder到底有什么区别?
- String, StringBuffer, StringBuilder 三者之间的区别是什么?
- String,StringBuffer,StringBuilder 三者之间的区别是什么?
- String, StringBuffer, StringBuilder 三者之间的区别是什么?
- String,StringBuffer,StringBuilder的区别
- String StringBuffer StringBuilder的区别
- String, StringBuffer, StringBuilder的区别?
- String,StringBuffer, StringBuilder 的区别
- String,StringBuffer,StringBuilder的区别
- String , StringBuffer, StringBuilder的区别
- String 、 StringBuffer 、StringBuilder 的区别
- String StringBuffer StringBuilder的区别
- String、StringBuffer、StringBuilder的区别
- String, StringBuffer, StringBuilder的区别
- 黑马程序员_网络编程
- 在美国国会没有让步之前,美国大型公司依然选择将海外利润留在低税率的国家
- 结构体成员顺序的影响
- 各种排序算法的实现及其比较
- [推荐]ORACLE PL/SQL编程之四: 把游标说透(不怕做不到,只怕想不到)
- String,StringBuffer, StringBuilder 的区别到底是什么?
- 基于键值的观察者模式编程
- php的汉字匹配
- Python初学笔记:Windows系统下备份文件
- 有几条疯狗
- 使用springtoolsuit的原因是因为可以整合flex项目
- 弹出菜单和执行查询的同步
- ds-5 对比优势
- 纽约曼哈顿发生爆炸致至少11人受伤