表达式转型注意事项,和final修饰的变量会被JVM优化
1java中表达式转型需要注意
实例如下:
1 2 3 4 5 | byte b1= 1 ,b2= 2 ,b3,b6; final byte b4= 4 ,b5= 6 ; b6=b4+b5; b3=(b1+b2); System.out.println(b3+b6); |
问会出现什么状况:A、输出结果:13,B、b6=b4+b5 编译出错 C、b3=b1+b2编译出错 D、运行异常
首先表达式转型注意以下规则:
①所有的byte,short,char型的值将被提升为int型;
②如果有一个操作数是long型,计算结果是long型;
③如果有一个操作数是float型,计算结果是float型;
④如果有一个操作数是double型,计算结果是double型;
首先2个byte类型相加,会自动提升为int,计算的结果也是int因此需要强制转化会byte,而被fianl修饰的变量不会改变,会被JVM优化,当2个final修饰相加时候会根据左边变量的类型而转化,作为这2个final变量的最终类型。
如下面的代码:
编译运行都是通过的,final int和final byte相加是整形和byte型都可以,不需要强制转换。
1 2 3 4 5 6 7 | public static void main(String[] args) { final int a= 2 ; final byte a2= 3 ; int a3=a+a2; byte a4=a+a2; System.out.println(a4); } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步