【java_基础深入】什么是常量优化机制

41 篇文章 6 订阅

问题来源

byte var = 10 + 20; // 10 + 20 值为int类型,却能赋值给 byte  
byte var = 10;
final  byte constant = 10;
byte var1 = var + 20;  // 存在变量,编译报错
byte var2 = constant+ 20; // 编译通过
int var = 10;
final int constant = 10;
byte var1 = var + 20;  // 存在变量,编译报错
byte var2 = constant+ 20; // 编译通过

问题描述

某些场景下,取值范围大的数据类型(int)可以直接赋值给取值范围小的(byte、shor、char)。

问题答案

  • 常量优化机制
    • 先判断值是否是常量, 然后再看值是否在该数据类型的取值范围内.
      final int constant = 126;
      byte var = constant + 2; // 编译出错,128超出byte的取值范围
      
    • 只有byte, short, char 可以使用常量优化机制, 转换成int类型

拓展

		short var = 10;
		var = var + 20; // 编译报错,运算中存在变量
		var += 20; // 等效于: var = (short) (s + 20); 没有走常量优化机制,而是进行了类型转换
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值