zoukankan      html  css  js  c++  java
  • 表达式转型注意事项,和final修饰的变量会被JVM优化

    1java中表达式转型需要注意

    实例如下:

    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型都可以,不需要强制转换。
     
    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);				
    	}
    

      

     
  • 相关阅读:
    Java debug技术
    mybatis-generator插件
    JVM常见问题
    Java安全之Access control
    JVM新生代各个区的比例问题
    宣告
    退役啦!
    NOIP 2018退役祭
    自定义博客园模板
    带花树算法
  • 原文地址:https://www.cnblogs.com/bokeofzp/p/4745681.html
Copyright © 2011-2022 走看看