黑马程序员技术交流社区

标题: 又是一道简单的JAVA基础面试题!特别有意思! [打印本页]

作者: 小穿钉    时间: 2015-10-19 19:06
标题: 又是一道简单的JAVA基础面试题!特别有意思!
public class Test {
        public static void main(String[] args) {
                        byte x=8;
                        int X=x+120;
                        x+=120;
                        System.out.println(X+"\n"+x);
                               
        }
}

请问  X等于x吗?    最后输出什么?


作者: liudongcan    时间: 2015-10-19 19:33
本帖最后由 liudongcan 于 2015-10-19 19:35 编辑

byte类型运算后自动升为int类型。不过这题不是
作者: 小穿钉    时间: 2015-10-19 19:36
liudongcan 发表于 2015-10-19 19:33
byte类型运算后自动升为int类型。不过这题不是

不会报错,这都是我自己敲的,最基础的
作者: 迷茫不堪的年纪    时间: 2015-10-19 19:41
不会是128 哇 。  如果 自动转int 8 ,  之后+=赋值对么
作者: 小穿钉    时间: 2015-10-19 19:43
迷茫不堪的年纪 发表于 2015-10-19 19:41
不会是128 哇 。  如果 自动转int 8 ,  之后+=赋值对么

50大分的大神,直接说结果嘛
作者: 朦胧色彩    时间: 2015-10-19 19:49
X = 128
x = -128 byte的范围是-128-127
作者: 小穿钉    时间: 2015-10-19 19:51
朦胧色彩 发表于 2015-10-19 19:49
X = 128
x = -128 byte的范围是-128-127

是的,眼神不错,不会是敲出来的吧?
作者: 迷茫不堪的年纪    时间: 2015-10-19 19:55
小穿钉 发表于 2015-10-19 19:43
50大分的大神,直接说结果嘛

忽略了  字节范围了- -    -128   ,  最后是多少
作者: 小穿钉    时间: 2015-10-19 20:00
迷茫不堪的年纪 发表于 2015-10-19 19:55
忽略了  字节范围了- -    -128   ,  最后是多少

128
-128
就是这样子
作者: Sayman    时间: 2015-10-19 21:21
总是有这么多陷阱
作者: tuyrt7    时间: 2015-10-19 21:43
哈哈 我也看到了这个漏洞。是不是取值范围的问题。byte (128) =-128
作者: JYcainiao    时间: 2015-10-19 22:19
byte x=8;
int X=x+120;
   x+=120;
X = 8 +128 =128 因为是int类型  不会错误
x += 120    等同于 x = (byte) 120 + 8 =?
128 二进制  00000000 00000000   00000000 1000 0000  这是补码  
                  前三个字节砍掉         -1              1111 1111  这是反码  这个是负数
                                                                  1000 0000  这是原码  -128
                 
是这样吗
作者: liudongcan    时间: 2015-10-19 22:26
小穿钉 发表于 2015-10-19 19:36
不会报错,这都是我自己敲的,最基础的

我看到有隐含强制转换,但没计算结果
作者: 小穿钉    时间: 2015-10-19 22:38
Sayman 发表于 2015-10-19 21:21
总是有这么多陷阱

对于我们来说,是个坑,是个陷阱,但是对于老师,对面试官,对于你未来的领导来说,就是看你基础到底硬不硬,你说对吧?
作者: 迷途老马    时间: 2015-10-19 22:38
点进来看看,有点收获。
作者: 小穿钉    时间: 2015-10-19 22:39
tuyrt7 发表于 2015-10-19 21:43
哈哈 我也看到了这个漏洞。是不是取值范围的问题。byte (128) =-128

是的,关键就是byte的范围,数据溢出问题。
作者: 小穿钉    时间: 2015-10-19 22:40
JYcainiao 发表于 2015-10-19 22:19
byte x=8;
int X=x+120;
   x+=120;

分析的非常好,就是这么个过程
作者: 小穿钉    时间: 2015-10-19 22:43
liudongcan 发表于 2015-10-19 22:26
我看到有隐含强制转换,但没计算结果

你是很明白怎么回事的,看的出来
作者: 小穿钉    时间: 2015-10-19 22:45
迷途老马 发表于 2015-10-19 22:38
点进来看看,有点收获。

你有收获就是我所希望的,
作者: 格子伞    时间: 2015-10-19 22:46
不一样,小x好像 是负几来着
作者: 小穿钉    时间: 2015-10-19 22:48
格子伞 发表于 2015-10-19 22:46
不一样,小x好像 是负几来着

恩,你是明眼人,到底是多少呀?
作者: sxfhblf123    时间: 2015-10-19 23:03
赞一个有点意思
作者: 小穿钉    时间: 2015-10-19 23:22
sxfhblf123 发表于 2015-10-19 23:03
赞一个有点意思

谢谢捧场




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