Java-String字符串相加及拼接

Java-String字符串相加及拼接

我的CSDN: https://blog.csdn.net/weixin_45910779/article/details/113663252

字符串相加

    String test1 = "test1" ;
    String test2 = test1 + "test2" + "test3" ;
    System.out.println(test2); //输出test1test2test3

在idea中使用加号,可以将两个字符串直接拼接,就如同上面代码一样,自动将两部分拼接,但是String对象长度是不可变的,所以为了做到这种相加拼接,就会创建一个StringBuilder对象进行字符串的拼接。


在cmd中使用javap -v 文件名.class 对字节码文件加载运行。
在这里插入图片描述在这里插入图片描述

    Code:
      stack=2, locals=3, args_size=1
         0: ldc           #2                  // String test1
         2: astore_1
         3: new           #3                  // class java/lang/StringBuilder
         6: dup
         7: invokespecial #4                  // Method java/lang/StringBuilder."<init>":()V
        10: aload_1
        11: invokevirtual #5                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        14: ldc           #6                  // String test2test3
        16: invokevirtual #5                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        19: invokevirtual #7                  // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
        22: astore_2
        23: getstatic     #8                  // Field java/lang/System.out:Ljava/io/PrintStream;
        26: aload_2
        27: invokevirtual #9                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
        30: return

可以看到第三行,new了一个StringBuilder对象,同时调用append()方法,用于字符串的拼接,再调用toString()方法转化为字符串,完成拼接操作。


效率较低

可以发现,如果使用过多的加号,就会占用大量资源,因为每次都需要创建多个StringBuilder对象,调用append()和toString()方法,同时还需要生成新的String对象接收。故效率较低。


concat()和append()

所以为了效率高的拼接,可以直接使用StringBuilder.append() 或 concat() 方法。

System.out.println(test1.concat("test4")); //输出test1test4

在这里插入图片描述
因为concat() 方法要求是两个String对象进行拼接,所以效率会很高。同时StringBuilder.append()是直接向原对象追加而不是新建对象,所以效率也高。

posted @ 2021-02-04 20:08  秃头不用洗发水  阅读(2835)  评论(0编辑  收藏  举报