黑马程序员技术交流社区

标题: 新人求教 [打印本页]

作者: jiazhuoxiao    时间: 2016-6-14 19:54
标题: 新人求教
我是一名希望能进入黑马的学生,从官网上下的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;
       这个也是变量同样是在变化的,那么这个程序也是有问题吗?但是我试了一下,这个编译是可以直接通过的,就是可能会损失精度,可以给我透彻解释下吗?
作者: Mature    时间: 2016-6-14 21:16
应该不会啊
作者: fracong    时间: 2016-6-14 23:00
这个怎么会出现精度损失呢?都是在int类型下进行,不存在数据类型自动提升,所以也不会出现数据类型转换啊!你是不是错了?
作者: 善良的死神达乐    时间: 2016-6-14 23:46
java中基本数据类型中的整数型是以int型为标准,就是说java中的整数型在底层就是int类型的,这是固定的,没法改的,不要问为什么,因为我也不知道....权威人士规定的还能咋办???所以我们只需要知道就好....只能int那么做,byte就是不行...
作者: 善良的死神达乐    时间: 2016-6-14 23:50
fracong 发表于 2016-6-14 23:00
这个怎么会出现精度损失呢?都是在int类型下进行,不存在数据类型自动提升,所以也不会出现数据类型转换啊 ...

int的不会,因为java中的底层就是int类型的,所以没关系...但是byte....两个byte类型相加....也应是byte的,你没看见么...b1 = 3;b2 = 4;3和4是int类型啊...在byte中有两个数据类型在一起...那个还不是损失精度????




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