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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 寰宇天侠 中级黑马   /  2015-8-30 23:22  /  512 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int a=1;
a=a++;
System.out.println(a);
a输出是多少??

12 个回复

倒序浏览
答案是1  是1  是1啊   没有人会吗。。。
回复 使用道具 举报
你这题的答案是1
回复 使用道具 举报
11111111111111
回复 使用道具 举报
答案知道 原理不知道。。
回复 使用道具 举报
int a=1;
a=a++;
System.out.println(a);

a = a++  可以看成两步,第一步系统定义一个变量temp,temp=1,第二步是后自增运算,a=a+1。但是第一步操作时,temp的值赋给了a,此时a就是1,将第二步 后自增赋值的运算给覆盖掉了,也就是根本没有进行后自增运算,只是将1赋值给了a。
回复 使用道具 举报 1 0
牛小爽 发表于 2015-8-31 00:11
int a=1;
a=a++;
System.out.println(a);

原来如此!~
回复 使用道具 举报
sunw 中级黑马 2015-8-31 22:21:22
8#
a输出是多少??  2   
回复 使用道具 举报
XLX 中级黑马 2015-8-31 22:45:57
9#
int a=1;
a=a++;
System.out.println(a);
本人新手,错了还请大神指教,++后置到a=a的后面程式会自动先执行a=a的指令,所以输出的a永远等于一,把a=去掉,或者改成a=++a,结果就会截然不同了。
回复 使用道具 举报
1,因为俩个过程,先吧右边a赋给左边a.
回复 使用道具 举报
居然是1,受教了
回复 使用道具 举报
输出的值是1.因为先运算在自增
回复 使用道具 举报
执行时,++在后面,所以虚拟机先用一个变量记住a的初始值,然后执行a++的操作,也就是执行a=a+1;也就是a++先给a赋值,此时a=2。然后再执行a=这个赋值给a的操作,但是之前虚拟机自定义的变量记住的值是1,所以就把1 的值赋给了a,最后a=1。

应该是跟内存结构有关了吧,先后出栈的问题。

小弟菜鸟,有错勿喷。。
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马