读书人

关于字符串拼凑的一点小发现

发布时间: 2012-10-13 11:38:17 作者: rapoo

关于字符串拼接的一点小发现
今天在调试StringBuider和StringBuffer的东东,然后无意间写了个字符串,结果在StringBuilder的断点处老是停顿,很让人恼火。

怎么回事呢?难道字符串的拼接是通过StringBuilder来实现的?赶紧验证一下:

源码如下:
public static void main(String[] args) {

String a = "a";
String b = "b";
String c = a + b;

StringBuffer builder = new StringBuffer();
builder.append("x");


}

字节码如下:
public static void main(java.lang.String[]);
Code:
0: ldc #16; //String a
2: astore_1
3: ldc #18; //String b
5: astore_2
6: new #20; //class java/lang/StringBuilder
9: dup
10: aload_1
11: invokestatic #22; //Method java/lang/String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
14: invokespecial #28; //Method java/lang/StringBuilder."<init>":(Ljava/lang/String;)V
17: aload_2
18: invokevirtual #31; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
21: invokevirtual #35; //Method java/lang/StringBuilder.toString:()Ljava/lang/String;
24: astore_3
25: new #39; //class java/lang/StringBuffer
28: dup
29: invokespecial #41; //Method java/lang/StringBuffer."<init>":()V
32: astore 4
34: aload 4
36: ldc #42; //String x
38: invokevirtual #44; //Method java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
41: pop
42: return

如上所述,看来还真是如此。

读书人网 >编程

热点推荐