简述
StringBuilder 对比 StringBuffer
- StringBuilder是非线程安全
- StringBuffer是线程安全的。
StringBuilder和StringBuffer其余的特性都是一样的,他们与String的区别:
- StringBuilder与StringBuffer的对象存储在堆中,String对象存储在
Constant String Pool
(字符串常量池) - 它们两个是可变对象。String一旦创建无法修改,并且String是线程安全的。
参考: 为什么字符串类是Final的?
剖析
-
点进去JDK的源码,一眼就看出StringBuilder与StringBuffer差别。
StringBulder继承AbstractStringBuilder
StringBuffer继承AbstractStringBuilder -
StringBuidler与StringBuffer的调用方式都一致,只不过StringBuffer加了
synchronized
.
- 看到这我们就明白StringBuilder与StringBuffer的关系了。本质上它们都是改变char数组中内容,来构建字符串,它们对外公开了修改char数组的方法,而String未公开。
几个有用的方法
System.arraycopy(value, srcBegin, dst, dstBegin, srcEnd - srcBegin);
- StringBuilder的reverse方法,实现字符串反转
面试题
- string、stringbuilder、stringbuffer区别
- String类为什么是final的
- 说说String的常用方法
charAt
trim
length
format
substring
contains
join
equals
isEmpty
concat
replace
equalsignoreCase
split
toLowerCase
toUpperCase
valueOf
最后
面试高频问题。
网友评论