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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Advances 中级黑马   /  2015-4-7 09:00  /  687 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public static void main(String[] args) {
                int a=0;
                a++;
                System.out.println(a);
                a=a++;
                System.out.println(a);
        }
这两个有啥区别?

11 个回复

倒序浏览
这两个从结果上看没什么区别
a++ 就相当于a=a+1,所以 a=a++ 多一次赋值,没必要
回复 使用道具 举报
如果只输出a++ 自增运算后的a的值是没有区别的,
但是如果将a++自增运算赋值给其他变量,变量的结果会不同,a的值还是一样
回复 使用道具 举报
呆呆呆呆孔 发表于 2015-4-7 09:11
如果只输出a++ 自增运算后的a的值是没有区别的,
但是如果将a++自增运算赋值给其他变量,变量的结果会不同 ...

是不是就是说  a=a++这是赋值运算   后面的++不再计算
回复 使用道具 举报
Advances 发表于 2015-4-7 10:00
是不是就是说  a=a++这是赋值运算   后面的++不再计算

是这个意思,a++属于单条语句,只要没涉及任何运算,结果都是一样的
此情况中,涉及赋值运算了,被赋值的那个变量值得结果会不同的
回复 使用道具 举报
这么简单   其实结果都是一样的
回复 使用道具 举报
哈,这个我昨两天刚问过老师亮哥。
具体原理是这样的:
int a = 1;
a = a++;

++运算符的运行原理:
1、首先在内存中开辟一块临时区域,将当前的a值放进去
2、a做a=a+1运算
3、假如++符号在变量的右侧,则该行的所有计算均使用 临时的a值,否则直接使用变更后的a值。

因此a=a++实际上a自增了1,但又马上被原值覆盖掉了。
回复 使用道具 举报
这下都是1了
回复 使用道具 举报
学习了,感谢
回复 使用道具 举报
a++自增1在赋值给a
回复 使用道具 举报
maimingliang 来自手机 初级黑马 2015-4-24 10:22:13
11#
就这个例子来说没什么区别。因为a++自增1;而a=a++,先把a的赋值给a,然后a再自增1,就相当于a自增1了。所以说就这个例子没有区别。
回复 使用道具 举报
两个结果在这里都相同:)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马