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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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吗?    最后输出什么?

22 个回复

正序浏览

谢谢捧场
回复 使用道具 举报
赞一个有点意思
回复 使用道具 举报
格子伞 发表于 2015-10-19 22:46
不一样,小x好像 是负几来着

恩,你是明眼人,到底是多少呀?
回复 使用道具 举报
不一样,小x好像 是负几来着
回复 使用道具 举报
迷途老马 发表于 2015-10-19 22:38
点进来看看,有点收获。

你有收获就是我所希望的,
回复 使用道具 举报
liudongcan 发表于 2015-10-19 22:26
我看到有隐含强制转换,但没计算结果

你是很明白怎么回事的,看的出来
回复 使用道具 举报
JYcainiao 发表于 2015-10-19 22:19
byte x=8;
int X=x+120;
   x+=120;

分析的非常好,就是这么个过程
回复 使用道具 举报
tuyrt7 发表于 2015-10-19 21:43
哈哈 我也看到了这个漏洞。是不是取值范围的问题。byte (128) =-128

是的,关键就是byte的范围,数据溢出问题。
回复 使用道具 举报
点进来看看,有点收获。
回复 使用道具 举报
Sayman 发表于 2015-10-19 21:21
总是有这么多陷阱

对于我们来说,是个坑,是个陷阱,但是对于老师,对面试官,对于你未来的领导来说,就是看你基础到底硬不硬,你说对吧?
回复 使用道具 举报
小穿钉 发表于 2015-10-19 19:36
不会报错,这都是我自己敲的,最基础的

我看到有隐含强制转换,但没计算结果
回复 使用道具 举报
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
                 
是这样吗
回复 使用道具 举报
tuyrt7 中级黑马 2015-10-19 21:43:39
11#
哈哈 我也看到了这个漏洞。是不是取值范围的问题。byte (128) =-128
回复 使用道具 举报
Sayman 中级黑马 2015-10-19 21:21:01
10#
总是有这么多陷阱
回复 使用道具 举报
迷茫不堪的年纪 发表于 2015-10-19 19:55
忽略了  字节范围了- -    -128   ,  最后是多少

128
-128
就是这样子
回复 使用道具 举报
小穿钉 发表于 2015-10-19 19:43
50大分的大神,直接说结果嘛

忽略了  字节范围了- -    -128   ,  最后是多少
回复 使用道具 举报
朦胧色彩 发表于 2015-10-19 19:49
X = 128
x = -128 byte的范围是-128-127

是的,眼神不错,不会是敲出来的吧?
回复 使用道具 举报
X = 128
x = -128 byte的范围是-128-127
回复 使用道具 举报
迷茫不堪的年纪 发表于 2015-10-19 19:41
不会是128 哇 。  如果 自动转int 8 ,  之后+=赋值对么

50大分的大神,直接说结果嘛
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马