A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hushun135 中级黑马   /  2015-9-23 23:24  /  1637 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

之前老师讲过对于byte b4 = 3 + 4;
                * 3和4都是常量,java有常量优化机制,就是在编译的的时候直接把3和4的结果赋值给b4了
所以运行通过。
后来又遇到这样一个问题float a=5+5.5,结果编译报错,想不通,问老师,原来是java常量优化机制只针对
byte char short类型,float,double没有这个机制!

3 个回复

倒序浏览
  程序:  
     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强转就可以

回复 使用道具 举报
楼上正解
回复 使用道具 举报
沙发说的不错,楼主还是太连青
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马