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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© beimenshisan 中级黑马   /  2015-8-16 22:38  /  673 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Demo{
       public static void main(String[] args){
             int a = 1;
             a = a++;
             System.out.println(a);
       }
}

问:为啥结果不是 2 ?

16 个回复

倒序浏览
a++的具体操作过程为:
1.先存储a的原值 temp = a;
2.然后a = a+1
3.最后再将存储的旧值temp赋值给a,a = temp

回复 使用道具 举报
你可以理解为a++有一个返回值,这个值是1,所以
a = a++;的情况的a++,此时a=2,但是这个表达式的值是1,它又将这个值1赋给了a,所以a又变成了1
回复 使用道具 举报
先将1赋值给a,然后再自增,所以答案是1
回复 使用道具 举报
这是一个基础问题了
回复 使用道具 举报
先++就可以了呗
回复 使用道具 举报
这就不用叫大神过来了,,,
回复 使用道具 举报
很基础的问题了,视频看了吗
回复 使用道具 举报
太难了    座等大神吧
回复 使用道具 举报
拿分来了
回复 使用道具 举报
拿点经验就好了。
回复 使用道具 举报
为了理想而奋斗 来自手机 中级黑马 2015-8-17 19:11:55
12#
拿点经验好了
回复 使用道具 举报
a++ 先运算 后自增1; ++a  先自增1 后运算
回复 使用道具 举报
因为是想将a值赋予a,再对a做自增
回复 使用道具 举报
a=a++是先把赋值再自增,记住就好了,没有为什么,这是java的规则。
回复 使用道具 举报
visen 中级黑马 2015-8-17 22:37:31
16#
++在前是先自增在使用,++在后是先使用在自增,所以a=a++是先赋值,所以a=1
回复 使用道具 举报
栈内存的原理是:先进后出
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马