在前面的博文《小学徒成长系列—String关键源码解析》和《小学徒进阶系列—JVM对String的处理》中,我们讲到了关于String的常用方法以及JVM对字符串常量String的处理。
但是在Java中,关于字符串操作的类还有两个,它们分别是StringBuilder和StringBuffer。我们先来就讲解一下String类和StringBuilder、StringBuffer的联系吧。
String、StringBuilder、StringBuffer的异同点
结合之前写的博文,我们对这三个常用的类的异同点进行分析:
异:
1>String的对象是不可变的;而StringBuilder和StringBuffer是可变的。
2>StringBuilder不是线程安全的;而StringBuffer是线程安全的
3>String中的offset,value,count都是被final修饰的不可修改的;而StringBuffer和StringBuilder中的value,count都是继承自AbstractStringBuilder类的,没有被final修饰,说明他们在运行期间是可修改的,而且没有offset变量。
同:
三个类都是被final修饰的,是不可被继承的。
StringBuilder和StringBuffer的构造方法
其实StringBuilder和StringBuffer的构造方法类型是一样的,里面都是通过调用父类的构造方法进行实现的,在这里,我主要以StringBuilder为例子讲解,StringBuffer就不重复累赘的讲啦。
1>构建一个初始容量为16的默认的字符串构建
1 public StringBuilder() {2super(16);3 },分之百的把自己推销给自己。