JVM针对String类型的优化

public class CountTest
{
	public static void main(String[] args)
	{
		String a = "abc";
		String b = a+"de";
		String c = "abcde";
		String d = "abc"+"de";
		System.out.println(b==c);
		System.out.println(d==c);
		System.out.println(b==d);
	}
}
结果:
false
true
false 

上述分别是源码,和对class文件进行反汇编后内容。

由此可见,虚拟机在将.java编译成字节码的时候进行了两个优化。

1.从

String d = "abc"+"de";

以及对应的反汇编的代码,可见虚拟机针对这种直接字符串进行了优化,直接变成一个String对象

2.从

String a = "abc";
		String b = a+"de";
以及对应的反汇编的代码,可以看出在这种情况下,虚拟机引入了线程不安全的StringBuilder进行字符串的叠加,避免字符串对象过多
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值