首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

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

2012-10-13 
关于字符串拼接的一点小发现今天在调试StringBuider和StringBuffer的东东,然后无意间写了个字符串,结果在S

关于字符串拼接的一点小发现
今天在调试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

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

热点排行