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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

class Test
{
             public static void main(String[] arges)
             {
                    int a = 10;
                    a=a++
                System.out.println(a);
         }
}

34 个回复

倒序浏览
你要要求什麼答案呢?
class Test
{
             public static void main(String[] args)
             {
                    int a = 10;
                    a=a++
                System.out.println(a);
         }
}

PS: a=10
回复 使用道具 举报
输出10           吧吧吧吧吧
回复 使用道具 举报
为什么不是11呢???
回复 使用道具 举报
楼上正解
回复 使用道具 举报
因为a++是先进行运算再进行自增操作,而自增后的值并没有赋值给a,所以输出的a仍然是10
回复 使用道具 举报
赋值运算从右到左进行,等号右边a++也是是一个表达式,表达式的值由运算符和变量共同决定,++运算符在变量a右边,该表达式的值为变量a自增前的值即10,然后把10再赋值给a,所以a最后值为10.如果++运算符在变量a左边,该表达式的值为变量a自增后的值即11
回复 使用道具 举报
看下编译结果就知道了。a=a++;. 打印结果为10,先运算后自加 。
回复 使用道具 举报
hanxiaopi 来自手机 中级黑马 2015-7-26 01:00:09
9#
是的第一位同学很对的
回复 使用道具 举报
看到这些题目都感觉很有爱的样子·~~~
回复 使用道具 举报
一城一世界 来自手机 中级黑马 2015-7-26 07:01:57
11#
小黑与小白 发表于 2015-7-25 22:46
class Test
{
             public static void main(String[] arges)

10吧,因为先赋值后加
回复 使用道具 举报
看int a = 10  ;  a =  a++ ; 这两句代码 , 首先 会 先 在 内 存中有 一个 a = 10   然后 执行 a++ 自增 的过程中  内存中 会自动开辟 出 另一个空间来保存 原始的 a = 10 ,  在执行a = a++这条语句的过程中 a++ 是先运算后自增的,所以a = a++  赋值给a 的就是 原始的 a = 10 ;  以前内存中a++就被覆盖掉了 ,这样说你是否能理解?
回复 使用道具 举报
++a 是先运算在赋值 a++是先赋值后运算 就这样。。
回复 使用道具 举报
建议用eclipse打个断点看一下就明白了,
回复 使用道具 举报
小黑与小白 发表于 2015-7-25 23:10
为什么不是11呢???

a=a++,你没有弄明白a++的意思,a++意思是 先使用,再加1,所以这里执行顺序应该是先将10传给左边的a,然后右边的a再自增一次,这个时候左边的a的值就是10.打印出来的也是10
回复 使用道具 举报
关于a++和++a的问题 很好理解,++在前的话就是先++运算再赋值给a,结果就是a = 11,++在后的话就是先赋值给a,a = 10,再++.
回复 使用道具 举报
syzc321 来自手机 初级黑马 2015-7-26 09:31:07
17#
a=a++可以理解成 a=10,a=a+1,而JAVA底层是从右向左运行,所以加了一,可又把10赋给了a,所以最后输出为10.
回复 使用道具 举报
谢谢各位解答,懂啦!!!
回复 使用道具 举报
一城一世界 来自手机 中级黑马 2015-7-27 11:31:09
19#
谁在前就用谁,+在前就用加,变量在前就用变量
回复 使用道具 举报
rxtm 中级黑马 2015-7-27 14:33:20
20#
你一定是个女程序员
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马