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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

jiazhuoxiao

中级黑马

  • 黑马币:28

  • 帖子:87

  • 精华:0

© jiazhuoxiao 中级黑马   /  2016-6-14 19:54  /  470 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我是一名希望能进入黑马的学生,从官网上下的JavaEE基础视频 第二天老师讲的这个关于数据类型转换的面试题有点小疑问
* 面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
        * byte b1 = 3;
        * byte b2 = 4;
        * byte b3 = b1 + b2;
                * 从两方面去回答这个题
                * b1和b2是两个变量,变量里面存储的值都是变化的,所以在程序运行中JVM是无法判断里面具体的值
                * byte类型的变量在进行运算的时候,会自动类型提升为int类型
这个如果是int a1 = 3;
               int a2 = 4;
               int a3 = a1 + a2;
       这个也是变量同样是在变化的,那么这个程序也是有问题吗?但是我试了一下,这个编译是可以直接通过的,就是可能会损失精度,可以给我透彻解释下吗?

4 个回复

正序浏览
fracong 发表于 2016-6-14 23:00
这个怎么会出现精度损失呢?都是在int类型下进行,不存在数据类型自动提升,所以也不会出现数据类型转换啊 ...

int的不会,因为java中的底层就是int类型的,所以没关系...但是byte....两个byte类型相加....也应是byte的,你没看见么...b1 = 3;b2 = 4;3和4是int类型啊...在byte中有两个数据类型在一起...那个还不是损失精度????
回复 使用道具 举报
java中基本数据类型中的整数型是以int型为标准,就是说java中的整数型在底层就是int类型的,这是固定的,没法改的,不要问为什么,因为我也不知道....权威人士规定的还能咋办???所以我们只需要知道就好....只能int那么做,byte就是不行...
回复 使用道具 举报
这个怎么会出现精度损失呢?都是在int类型下进行,不存在数据类型自动提升,所以也不会出现数据类型转换啊!你是不是错了?
回复 使用道具 举报
应该不会啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马