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

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

例1:

String s1 = "a";

String s2 = "b";

String s3 = "a" + "b";

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

acc3866efd498c8d92e9be186e49eee5.png

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

例2:

String s1 = "a";

String s2 = "b";

String s3 = s1 + s2;

f403677d9b22c320aa0133a334eae56d.png

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

例3:

String s4 = new String("s");

String s5 = new String("v");

String s6 = s4 + s5;

83457adcbd1ced81a26435f3ef9eef3f.png

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

例4:

String s7 = "a";

String s8 = new String("h");

String s9 = s7 + s8;

1eed8ce10e9a0b82b771820e9167f46f.png

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

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值