黑马程序员技术交流社区

标题: 关于常量优化机制! [打印本页]

作者: hushun135    时间: 2015-9-23 23:24
标题: 关于常量优化机制!
之前老师讲过对于byte b4 = 3 + 4;
                * 3和4都是常量,java有常量优化机制,就是在编译的的时候直接把3和4的结果赋值给b4了
所以运行通过。
后来又遇到这样一个问题float a=5+5.5,结果编译报错,想不通,问老师,原来是java常量优化机制只针对
byte char short类型,float,double没有这个机制!
作者: tianweidong    时间: 2015-9-23 23:53
  程序:  
     int a = 3+4;
    byte b = 3 + 4;
    double t = 5.5 +3.4;
    float f = 5+5;
    System.out.println("a="+a);
    System.out.println("b="+b);
    System.out.println("t="+t);
    System.out.println("f="+f);
运行结果:
a=7
b=7
t=8.9
f=10.0
    所以从运行结果上看,你说的并不对。1.当给整型变量赋值时,编译时会判断常量值是否超出整型范围
                                                              2.整型常量赋值给浮点变量时,类型会提升为浮点型
                                                              3.小数常量应该默认为double,所以赋给float变量,存在向下转型,加上float强转就可以


作者: 劲爆对策    时间: 2015-9-24 01:27
楼上正解

作者: 大大大卷    时间: 2015-9-24 08:05
沙发说的不错,楼主还是太连青




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2