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()是直接向原對象追加而不是新建對象,所以效率也高。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM