Java常量优化机制

常量优化机制:给一个变量赋值,如果等于号的右边是常量的表达式并且没有一个变量,那么就会在编译阶段计算该表达式的结果,然后判断该表达式的结果是否在左边类型所表示范围内,如果在,那么就赋值成功,如果不在,那么就赋值失败。但是注意如果一旦有变量参与表达式,那么就不会有编译期间的常量优化机制

byte b1 = 1+3;
byte b2 = 127+1;//错误
long l1 = 3000000000;//错误
long l2 = 30000000000L;
byte b3 = 10;
b3 = b3+2;//错误
String s1 = "abc";
String s2 = "abc";
System.out.println(s1==s2);//true
String s3 = "ab"+"c";
System.out.println(s2==s3);//true
String s4 = "a";
String s5 = s4+"bc";
System.out.println(s2==s5);//false
	@Test
	public void test3(){
		String str1 = "hello";
		String str2 = "java";
		String str3 = "hellojava";
		String str4 = "hello" + "java";//常量与常量拼接,还是常量
		String str5 = "hello" + str2;//常量与变量拼接,结果在堆中
		String str6 = str1 + str2;//变量与变量拼接,结果也在堆中
		
		System.out.println("str3 == str4  " + (str3 == str4));//true
		System.out.println("str3 == str5  " + (str3 == str5));//false
		System.out.println("str3 == str6  " + (str3 == str6));//false
		
		final String str7 = "hello";
		final String str8 = "java";
		String str9 = str7 + str8;//常量与常量拼接
		System.out.println("str3 == str9   " + (str3 == str9));//true
		
		String str10 = (str1 + str2).intern();//intern()的结果放常量池
		System.out.println(str3 == str10);//true
	}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值