黑马程序员技术交流社区

标题: 问题 [打印本页]

作者: 825176857    时间: 2015-7-15 09:49
标题: 问题
public class Demo {

        public static void main(String[] args) {
                byte a=127;
                int x=++a;
                int y=a+1;
                int z=a++;
                System.out.println("x="+x+"y="+y+"z="+z);
        }

}
x=-128y=-127z=-128
咋是负的呢?


作者: 蔡锐    时间: 2015-7-15 10:59
byte的范围是-128~127
超过这个范围byte会取 最后8位当补码
++a操作a大于127了,取补码10000000
10000000的原码是-128
得x=-128
y=a+1 即-128+1=-127,a依然为-128
z=a++ 先把a赋给了z再运算 因此z=-128 ,a其实变换成了-127






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