阐述分为两大类:
第一类:关于对StringBuilder底层实现的基本描述
第二类:举例说明StringBuilder
第一类(也分为三点):
a.StringBuilder类和String的底层实现对比以及好处
StringBuilder类:
首先其所属包为java.lang;
作用是拼接两个及两个字符串以上效率会比较高
StringBuilder类在JDK8底层是char数组,没有被final修饰,所以在char数组存满后,可以扩容。
String类在JDK8底层也是char数组,是被final修饰的,new创建对象时只有一个地址值,也就是只有一个空间,所以每开辟出一块空间存上第一个值后,再需要去存值,就需要再开辟一块内存空间,把先前开辟出的空间里的值存下来,再存接下来的要存的值,如此效率不高,也更占用内存空间
b.JDK8及以后,String(JDK8底层也是char数组,但是final修饰的)的+操作底层也是StringBuilder
举例:原码说明
String r = "HH";
r = "AA";
进入cmd命令提示符,输出
javap -verbose -p 类名
如下图所示
c.String的+操作底层已经是String Builder了,还学习使用StringBuilder的意义是什么呢?
String的加操作,每有一个单等赋值操作,底层都会创建一个StringBuilder对象。
举例:原码说明
String str = “AA”;
Str = str+”BB”;
Str = str+”CC”;
进入cmd命令提示符,输出
javap -verbose -p 类名
如下图所示