美文网首页
利用加号+连接字符串详解

利用加号+连接字符串详解

作者: 带着二娃去遛弯 | 来源:发表于2019-04-16 16:13 被阅读0次

    之前一直在探讨利用new关键字创建String对象的个数,没有想过利用+连接字符串虚拟机是怎么实现的,下面利用jdk自带的反编译命令javap看一下String的执行过程

    例1:

           String s1 = "a";
        String s2 = "b";
        String s3 = "a" + "b";
    

    先看直接用+连接两个字符串虚拟机是怎么执行的,在命令提示符下进入到class所在的文件夹下输入javap -v Test.class(程序所在的class文件)


    image.png

    经过查看发现利用+直接连接两个字符串常量,虚拟机会直接把这两个字符串连接起来看成一个字符串

    例2:

          String s1 = "a";
        String s2 = "b";
        String s3 = s1 + s2;
    
    1.png

    利用+连接两个引用,虚拟机看成StringBuilder,会创建一个StringBuilder对象,然后调用append方法进行追加操作,最后调用toString方法转换成String

    例3:

        String s4 = new String("s");
        String s5 = new String("v");
        String s6 = s4 + s5;
    
    2.png

    用+连接两个new创建的String对象,虚拟机也是会看成一个StringBuider进行append操作,最后执行toString

    例4:

        String s7 = "a";
        String s8 = new String("h");
        String s9 = s7 + s8;
    
    3.png

    当连接一个字符串常量和一个引用也是会看成StringBuilder进行操作

    总结:当+两边连接的是字符串常量时,虚拟机会直接进行优化,看成一个字符串,当+的一边是引用的时候,虚拟机就会创建StringBuilder,利用append方法进行连接操作。

    相关文章

      网友评论

          本文标题:利用加号+连接字符串详解

          本文链接:https://www.haomeiwen.com/subject/xjgbwqtx.html