表达式转型注意事项,和final修饰的变量会被JVM优化

来源:互联网 发布:觉悟软件在线注册码 编辑:程序博客网 时间:2024/06/06 18:49

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) {       
    finalint a=2;
    finalbyte a2=3;
    inta3=a+a2;
    bytea4=a+a2;
    System.out.println(a4);            
    }
0 0
原创粉丝点击