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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

阿弥陀佛么么哒

中级黑马

  • 黑马币:69

  • 帖子:96

  • 精华:0

© 阿弥陀佛么么哒 中级黑马   /  2016-8-8 08:56  /  330 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.  {                                
        byte b=4;
           b=3+7;
       System.out.print(b);
    }
输出:10
2.{
     byte b=4;
     byte b1=3;
     byte b2=7;
     b=b1+b2;
  System.out.print(b);  
    }
输出:报错 可能会损失精度

解析:byte b=4  中,int类型的4为什么会赋值给b呢?b不是byte类型吗?原因是编译器在编译的时候,它会判断右边的数值是不是在字节这个范围内,如果在,把int类型的值做一次强转再赋给b;而2中的b1 b2是变量,值的范围不确定,编译时不能做检察,检察不了就会报错。(如问题分析有误,请大家不吝指证哦)

1 个回复

正序浏览
我这里记的是JAVA有常量优化机制!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马