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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

main里,
a = a++;
System.out.println(a);
结果等于多少?
why?
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端

45 个回复

正序浏览
anTG 中级黑马 2016-11-25 16:03:26
46#
呱码农 发表于 2016-11-25 15:11
你说说?

我不知道!!!
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
anTG 发表于 2016-11-25 13:42
那你知不知道为什么左边的a被赋值就不能改变了?

你说说?
回复 使用道具 举报
anTG 中级黑马 2016-11-25 13:42:15
44#
呱码农 发表于 2016-11-25 12:45
我知道了!
右边的a是先赋值给左边的a的,然后再自加,打印输出a是左边的a的值,左边的a一旦被赋值了就不 ...

那你知不知道为什么左边的a被赋值就不能改变了?
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
anTG 发表于 2016-11-25 11:48
不可描述,因为我也说不清楚

我知道了!
右边的a是先赋值给左边的a的,然后再自加,打印输出a是左边的a的值,左边的a一旦被赋值了就不能改变了。所以是5。
但其实a++后a的值应该是6的,为了证明这一点。
我把a=a++;用b=a++替换掉。再打印a,就会发现a的输出结果是6了。
回复 使用道具 举报
anTG 中级黑马 2016-11-25 11:48:19
42#
呱码农 发表于 2016-11-25 11:45
我int a1=a;输出a1
结果还是5。
哈哈哈这个我也不懂了

不可描述,因为我也说不清楚
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
anTG 发表于 2016-11-25 11:44
你在后边再加一句int b=a;打印试试

我int a1=a;输出a1
结果还是5。
哈哈哈这个我也不懂了
求解释
回复 使用道具 举报
anTG 中级黑马 2016-11-25 11:44:37
40#
呱码农 发表于 2016-11-25 11:41
其实是先赋值再自加的,自加自后的a留着下一次使用,但是那条赋值语句已经执行过了。就不再执行,直接执行 ...

你在后边再加一句int b=a;打印试试
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
anTG 中级黑马 2016-11-25 11:42:30
39#
答案不是重点,下一个问题why?,这才是重点
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
其实是先赋值再自加的,自加自后的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


实践是检验整理的唯一标准
回复 使用道具 举报
本帖最后由 aA772807986 于 2016-11-25 10:14 编辑

因为a=a++相当于输出a++=5
回复 使用道具 举报
结果:a=5呢!!!
回复 使用道具 举报
anTG 中级黑马 2016-11-25 07:53:57
34#
SuperLan 发表于 2016-11-25 00:53
为什么结果是5???

分析一下内存肯定就知道了,可我不知道怎么分析
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
为什么结果是5???
回复 使用道具 举报
anTG 中级黑马 2016-11-25 00:43:07
32#
乡村看水 发表于 2016-11-24 14:16
验证一下就知道了

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

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

debug可以验证。
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
anTG 中级黑马 2016-11-24 21:35:41
29#
duanqichao 发表于 2016-11-24 21:21
嗯嗯,确实是5,这样只能说明那个++就没有去执行,只是把a的值去赋值了。 可以和if(a++> b )中的这种情况 ...

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

嗯嗯,确实是5,这样只能说明那个++就没有去执行,只是把a的值去赋值了。 可以和if(a++> b )中的这种情况做个比较,这种的++是参与运算的。
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马