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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 纯属礼貌# 于 2015-5-5 15:25 编辑
  1. public class Test {
  2.         public static void main (String[] args){
  3.         int a=10;
  4.          a=a++;//这里的运行过程是什么    结果显示是b是10,那么先赋值  但是后自加的过程到哪里去了
  5.         int b=a++;//结果意味着此处a没有自加还是10
  6.         System.out.print(b);
  7. }

  8. }
复制代码

14 个回复

倒序浏览
请问自加跑那里了??
回复 使用道具 举报
a=a++的过程是:a=a,a+1(注意此时a+1的结果没有赋值给a)
回复 使用道具 举报
想要深入了解,看这里:http://blog.163.com/lqqss@126/blog/static/194167542013216115322599/

点评

good!!!!  发表于 2015-5-6 12:34
回复 使用道具 举报
程序执行a=a++ 时,  这时 a++ 是10,  a已经是11了, 不过 你又把a++赋值给a ,所以a又变成了10
回复 使用道具 举报
你要区分a++与++a的 区别,看图片

QQ截图20150505154553.png (134.49 KB, 下载次数: 28)

QQ截图20150505154553.png
回复 使用道具 举报
int a=10;
//a=a++;       
int b=a++;
System.out.println(b);
你的题目这样写也一样,结果都是b=10,然后a=11,我是debug的。我想自加的过程不是原子性的,应该有个中间变量,嗯,你看看三楼的,我也是最后看三楼的,正解

点评

突然发现3楼有点不好懂  发表于 2015-5-6 12:41
回复 使用道具 举报
你试下 a = ++a 试一下
回复 使用道具 举报
a = a++ 转换过来就是  a = a = a+1;

Java在遇到++ 的时候,会先开辟出内存空间,存放变量自增之前的数值,然后在赋值的时候,再把变量指向这个内存中的数值,这个时候++就被忽略了。
回复 使用道具 举报
其实有好几个这样的实例。b=a++;b=a--;b=++a;b=--a;都是关于运算符优先级的问题。前两个是先赋值再运算,后两个是先运算再赋值。
回复 使用道具 举报
这个可以用毕老师视频里面的理解啊
int x=2;
int y;
y=x++;

System.out.println(y);//很明显y=2  分析;x先赋值给y,在自增
分析;
前++就是x先自增(先吃饭),在赋值(再跑出去玩)
后++就是x先赋值(先跑出去玩),在自增(在吃饭)
回复 使用道具 举报
sbsbsb 发表于 2015-5-5 15:51
程序执行a=a++ 时,  这时 a++ 是10,  a已经是11了, 不过 你又把a++赋值给a ,所以a又变成了10 ...

不是应该先赋值  后自加吗
回复 使用道具 举报
ZSMAN 发表于 2015-5-5 15:47
想要深入了解,看这里:http://blog.163.com/lqqss@126/blog/static/194167542013216115322599/

good!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马