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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© anTG   /  2016-11-24 01:19  /  2452 人查看  /  45 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

anTG 发表于 2016-11-24 10:08
why?  不是很理解这个结果

第一步,在内存里边,a先把5放到一边,再在运算空间里+1变为6。
第二步,a把放到一边的5又赋值给了它自己,a这时候就从6变为了5。
所以,输出的a是5。
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
嗯,这是用手机打的,一拿到电脑就实验了,是5。也实验了别的几种情况。
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
anTG 发表于 2016-11-24 10:08
why?  不是很理解这个结果

如咱们之前所说的b=a++,其实不是a先赋值给b再进行自增,而是a先把这个要赋给b的值放到一边,自己先进行+1,然后再把放到一边的这个值给b
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
anTG 中级黑马 2016-11-24 13:58:29
24#
杨森的安卓路 发表于 2016-11-24 13:27
第一步,在内存里边,a先把5放到一边,再在运算空间里+1变为6。
第二步,a把放到一边的5又赋值给了它自己 ...

大概明白了,(*๓´╰╯`๓)Ťhαnk ㄚou..
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
anTG 中级黑马 2016-11-24 13:59:44
25#
FAN8210 发表于 2016-11-24 13:32
嗯,这是用手机打的,一拿到电脑就实验了,是5。也实验了别的几种情况。
...

实践出真理
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
anTG 发表于 2016-11-24 12:08
照这样子,结果就不是5了啊

验证一下就知道了
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
走向程序的第一步环境变量已经通过  第二部又卡倒了
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
anTG 发表于 2016-11-24 12:07
所以就有问题了,结果是5

嗯嗯,确实是5,这样只能说明那个++就没有去执行,只是把a的值去赋值了。 可以和if(a++> b )中的这种情况做个比较,这种的++是参与运算的。
回复 使用道具 举报
anTG 中级黑马 2016-11-24 21:35:41
29#
duanqichao 发表于 2016-11-24 21:21
嗯嗯,确实是5,这样只能说明那个++就没有去执行,只是把a的值去赋值了。 可以和if(a++> b )中的这种情况 ...

等于5就没执行了,你别自己想着来啊,你怎么就知道++就没有执行呢?
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
anTG 发表于 2016-11-24 21:35
等于5就没执行了,你别自己想着来啊,你怎么就知道++就没有执行呢?

debug可以验证。
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
anTG 中级黑马 2016-11-24 22:42:07
31#
duanqichao 发表于 2016-11-24 21:57
debug可以验证。

debug一行一行走,a = a++在同一行,怎么能看出来++执行没执行?
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
anTG 中级黑马 2016-11-25 00:43:07
32#
乡村看水 发表于 2016-11-24 14:16
验证一下就知道了

不知道怎么验证的。。。
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
为什么结果是5???
回复 使用道具 举报
anTG 中级黑马 2016-11-25 07:53:57
34#
SuperLan 发表于 2016-11-25 00:53
为什么结果是5???

分析一下内存肯定就知道了,可我不知道怎么分析
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
结果:a=5呢!!!
回复 使用道具 举报
本帖最后由 aA772807986 于 2016-11-25 10:14 编辑

因为a=a++相当于输出a++=5
回复 使用道具 举报
package com.java1234.test;

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


5


实践是检验整理的唯一标准
回复 使用道具 举报
其实是先赋值再自加的,自加自后的a留着下一次使用,但是那条赋值语句已经执行过了。就不再执行,直接执行打印输出语句。所以结果是5
回复 使用道具 举报
anTG 中级黑马 2016-11-25 11:42:30
39#
答案不是重点,下一个问题why?,这才是重点
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
anTG 中级黑马 2016-11-25 11:44:37
40#
呱码农 发表于 2016-11-25 11:41
其实是先赋值再自加的,自加自后的a留着下一次使用,但是那条赋值语句已经执行过了。就不再执行,直接执行 ...

你在后边再加一句int b=a;打印试试
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马