黑马程序员技术交流社区

标题: 关于java中a=a++的问题。 [打印本页]

作者: 残影    时间: 2015-9-7 00:04
标题: 关于java中a=a++的问题。
本帖最后由 残影 于 2015-9-7 00:10 编辑

int a = 10;
int b = ++a;
a = a++;
System.out.println(a);//输出11,why?
还是一个很好的问题呢。回答了几个帖子,由于找不到自己回复的帖子,所以自问自答发一个。以后也方便自己看。算是笔记咯。

因为java编译器中 ++算术运算符的优先级高于=赋值运算符,,这是运算符优先级的问题。
a = a++; // ++在右边,本来是先赋值给a然后自加的,但是由于++高于=,所以先把(a++)这个值 11,java会先开辟一个临时空间存储11,然后a自加1得到12,所以都执行完了之后,开始赋值。就把临时空间存储的数值11,给赋值给了a,所以a的12被覆盖了,所以a就是11了。

所以这是编译器的问题。




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