zoukankan      html  css  js  c++  java
  • 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()是直接向原对象追加而不是新建对象,所以效率也高。

  • 相关阅读:
    Charpter5 软件测试总结
    Charpter3 关于闰年测试
    Charpter2 新的测试用例
    Charpter1 等价类划分方法分析与应用
    软件测试第一周学习总结
    关于软件测试学习的心得
    软件测试-同行评审
    白盒测试
    黑盒测试
    Java实现的闰年测试程序
  • 原文地址:https://www.cnblogs.com/djhzzl/p/14374716.html
Copyright © 2011-2022 走看看