黑马程序员技术交流社区

标题: 大神过来 [打印本页]

作者: beimenshisan    时间: 2015-8-16 22:38
标题: 大神过来
class Demo{
       public static void main(String[] args){
             int a = 1;
             a = a++;
             System.out.println(a);
       }
}

问:为啥结果不是 2 ?
作者: iamzk    时间: 2015-8-16 23:04
a++的具体操作过程为:
1.先存储a的原值 temp = a;
2.然后a = a+1
3.最后再将存储的旧值temp赋值给a,a = temp


作者: kenfans    时间: 2015-8-16 23:40
你可以理解为a++有一个返回值,这个值是1,所以
a = a++;的情况的a++,此时a=2,但是这个表达式的值是1,它又将这个值1赋给了a,所以a又变成了1
作者: fantianfei    时间: 2015-8-17 01:45
先将1赋值给a,然后再自增,所以答案是1
作者: kevin986745zk    时间: 2015-8-17 07:23
这是一个基础问题了
作者: sven556677    时间: 2015-8-17 07:50
先++就可以了呗
作者: 帅帅loyal    时间: 2015-8-17 14:27
这就不用叫大神过来了,,,
作者: zhao1991    时间: 2015-8-17 16:46
很基础的问题了,视频看了吗

作者: liuch111    时间: 2015-8-17 16:50
太难了    座等大神吧
作者: lknum1    时间: 2015-8-17 17:17
拿分来了
作者: pengbeilin    时间: 2015-8-17 17:42
拿点经验就好了。
作者: 为了理想而奋斗    时间: 2015-8-17 19:11
拿点经验好了
作者: xp2015    时间: 2015-8-17 21:20
a++ 先运算 后自增1; ++a  先自增1 后运算
作者: koibiki    时间: 2015-8-17 21:48
因为是想将a值赋予a,再对a做自增
作者: 蓬头小道士    时间: 2015-8-17 22:14
a=a++是先把赋值再自增,记住就好了,没有为什么,这是java的规则。
作者: visen    时间: 2015-8-17 22:37
++在前是先自增在使用,++在后是先使用在自增,所以a=a++是先赋值,所以a=1
作者: leiyingyin    时间: 2015-8-17 23:08
栈内存的原理是:先进后出




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