创建了五个对象。
1.StringBuilder (堆)。
2."ab" (字符串常量池)。
3.String("c") 堆。
4."c" (字符串常量池)。
5.StringBuilder 的toString 里new了一个String (堆)。
0 new #2 <java/lang/StringBuilder>
3 dup
4 invokespecial #3 <java/lang/StringBuilder.<init> : ()V>
7 ldc #4 <ab>
9 invokevirtual #5 <java/lang/StringBuilder.append : (Ljava/lang/String;)Ljava/lang/StringBuilder;>
12 new #6 <java/lang/String>
15 dup
16 ldc #7 <c>
18 invokespecial #8 <java/lang/String.<init> : (Ljava/lang/String;)V>
21 invokevirtual #5 <java/lang/StringBuilder.append : (Ljava/lang/String;)Ljava/lang/StringBuilder;>
24 invokevirtual #9 <java/lang/StringBuilder.toString : ()Ljava/lang/String;>
27 astore_1
28 return
本文详细讲解了创建StringBuilder对象与字符串常量池的区别,涉及内存分配、构造过程,以及与String对象的交互,包括toString方法中新的String对象生成。
3908

被折叠的 条评论
为什么被折叠?



