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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 珞诗妍 中级黑马   /  2016-1-11 22:26  /  913 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  今天是萌新上课的第二天,运算符弄的有点手忙脚乱,看到这样一个题,看看同是新人你们有没有掉过这个坑!下面发题,答案不定时更新哦!
class Operator {
     public static void main(String[] args) {
          int a = 10;
               a = a++;
          int b = a;
           System.out.println(a+"-"+b);
     }
}
请问 最后的输出结果是多少!新人不要编译出来结果再回复哦!

点评

同为10  发表于 2016-1-11 23:33

11 个回复

倒序浏览
a是11 b是10
回复 使用道具 举报

然而编译的结果是a=10,b=10
回复 使用道具 举报

一瞅你就是跟我一样的萌新!{:2_30:}
回复 使用道具 举报
我反正猜错了{:2_31:}
回复 使用道具 举报
我还是说下答案吧,其实是  10-10,中间的 -  不能少哦
回复 使用道具 举报
卧槽掉坑了,这题可以.就是不太理解
回复 使用道具 举报
qt520 中级黑马 2016-1-13 10:10:54
8#
a = a++a++这个表达式的值为10,自增的a仅为返回值,用代码看更直观
实际上过程为
  1. int temp = a;
  2. a++;
  3. a = temp;
复制代码





回复 使用道具 举报
还是不是很明白,求楼主讲解,顺便一提我也是即将上课的萌新
回复 使用道具 举报
其实现在学基础,教程都会跟你们解释i++和++i的区别,相信大家都知道。只不过这个代码涉及到的知识面目前超出了你们的范围,听听就行,不要纠结。以后编码多了深入了你们自己自动会去了解的。
a = a++,首先理应来说是将a 赋值给 a然后 a 再自增吧,但是,在java运算符优先级里面,++是比=要高级的,所以尴尬的java只是先临时开辟个内存空间保存a的值,然后a自增,再从刚刚的临时空间把值取出来,赋值给a。
就有点像楼上说的:
int temp = a;
a++;
a = temp;
所以这道题答案是10-10
好了,你们不需要纠结为什么,学基础就先知道i++和++i的执行顺序就可以啦
回复 使用道具 举报
学习了,膜拜大神 Org
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马