黑马程序员技术交流社区

标题: 关于 a = a++; [打印本页]

作者: gao5867565    时间: 2016-10-15 10:23
标题: 关于 a = a++;
[Java] 纯文本查看 复制代码
class test{
        public static void main(String[] agrs) {
                int i = 1;
                i = i ++;
                System.out.print(i);
        }
}

这段代码最后得出的结果是 1 ,为什么?有没有对java运行机制比较了解的大神回答一下???
作者: z443863517    时间: 2016-10-15 10:52
你这个问题,还没入门
作者: Bast1an    时间: 2016-10-15 11:08
同问,我也不会了……

作者: StriverHao    时间: 2016-10-15 11:08
结果怎么会是1?
作者: 若白衣卿相    时间: 2016-10-15 12:53
很简单,把a++当作一个整体,经过a++,a的值变为2,a++这个整体对外表现值为1,将1赋给a,最后a就等于1了

作者: 度半de阳光    时间: 2016-10-15 14:00
当++在变量后面,先参与运算,再自增.
也就是说
             i  =  i  ++;  
右边的i先把1赋值给左边的i. 然后右边的i再进行自增,为2.但是打印出来是已经被赋值了的左边的i.
eg:class Test120 {
        public static void main(String[] args) {
                int a = 1;               
                int b;
                b = a++;                              //a赋值给b,b = 1,a++==2
                System.out.print(b);
        }
}

作者: 哦啊啊    时间: 2016-10-15 14:15
蓝瘦香菇好蓝瘦

作者: gao5867565    时间: 2016-10-15 14:30
好蓝瘦{:2_30:}
作者: 读书可以当饭吃    时间: 2016-10-15 14:38
这个问题是个坑,表达式i++的值是几,i就是几
作者: 小菜_一碟    时间: 2016-10-19 21:35
class test{
    public static void main(String[] agrs) {
        int i = 1;
        int j = i++;
        i = j;
        System.out.print(i);
    }
}

这个代码与你提供的代码是等价的,对比着理解就懂了。
作者: 飞舞的指尖    时间: 2016-10-19 23:42
打印的是赋值后 左边的i值
作者: gyy    时间: 2016-10-20 01:22
http://soft.chinabyte.com/database/279/11431779.shtml给你转一篇博客你就知道了,是编译器的问题

作者: 1413157316    时间: 2016-10-20 13:49
我是这样记的:i在前面,i先算,所以先把i原来的值临时存下来,然后i再自增,最后赋值给左边的值是原来临时存储的值
作者: 冷猫    时间: 2016-10-20 20:44
我的理解是++在前面就先自增再赋值,++在后面是先赋值后自增.
作者: fdzx0707fh    时间: 2016-10-20 22:10
都这样了!!!
作者: 332597171    时间: 2016-10-21 00:06
i = i ++;
++在后面   就等这个语句前面的操作完毕后再进化++  也就是先赋值在自增  虽然自增了 但是没有再继续赋值 所有只记录了1
作者: 雪中鱼01    时间: 2016-10-21 22:39
度半de阳光 发表于 2016-10-15 14:00
当++在变量后面,先参与运算,再自增.
也就是说
             i  =  i  ++;  

正解,我们刚学完

作者: 一小丢丢    时间: 2016-10-21 22:57
++运算符在变量的后面并且和赋值运算符 = 一起做运算,先把1赋值给了等号左边的变量i,然后自身在自增一,所以打出来的是1




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