黑马程序员技术交流社区
标题:
能做对证明你理解了!
[打印本页]
作者:
珞诗妍
时间:
2016-1-11 22:26
标题:
能做对证明你理解了!
今天是萌新上课的第二天,运算符弄的有点手忙脚乱,看到这样一个题,看看同是新人你们有没有掉过这个坑!下面发题,答案不定时更新哦!
class Operator {
public static void main(String[] args) {
int a = 10;
a = a++;
int b = a;
System.out.println(a+"-"+b);
}
}
请问 最后的输出结果是多少!新人不要编译出来结果再回复哦!
作者:
jidan
时间:
2016-1-11 22:34
a是11 b是10
作者:
leleranran
时间:
2016-1-11 22:35
jidan 发表于 2016-1-11 22:34
a是11 b是10
然而编译的结果是a=10,b=10
作者:
珞诗妍
时间:
2016-1-11 22:36
jidan 发表于 2016-1-11 22:34
a是11 b是10
一瞅你就是跟我一样的萌新!{:2_30:}
作者:
伊丽莎白.大海
时间:
2016-1-11 23:10
我反正猜错了{:2_31:}
作者:
珞诗妍
时间:
2016-1-12 22:12
我还是说下答案吧,其实是 10-10,中间的 - 不能少哦
作者:
jacky左
时间:
2016-1-12 23:50
卧槽掉坑了,这题可以.就是不太理解
作者:
qt520
时间:
2016-1-13 10:10
a = a++a++这个表达式的值为10,自增的a仅为返回值,用代码看更直观
实际上过程为
int temp = a;
a++;
a = temp;
复制代码
作者:
随缘的影子
时间:
2016-1-13 10:43
还是不是很明白,求楼主讲解,顺便一提我也是即将上课的萌新
作者:
Clouddd
时间:
2016-1-13 11:25
其实现在学基础,教程都会跟你们解释i++和++i的区别,相信大家都知道。只不过这个代码涉及到的知识面目前超出了你们的范围,听听就行,不要纠结。以后编码多了深入了你们自己自动会去了解的。
a = a++,首先理应来说是将a 赋值给 a然后 a 再自增吧,但是,在java运算符优先级里面,++是比=要高级的,所以尴尬的java只是先临时开辟个内存空间保存a的值,然后a自增,再从刚刚的临时空间把值取出来,赋值给a。
就有点像楼上说的:
int temp = a;
a++;
a = temp;
所以这道题答案是10-10
好了,你们不需要纠结为什么,学基础就先知道i++和++i的执行顺序就可以啦
作者:
清野
时间:
2016-1-13 12:49
学习了,膜拜大神 Org
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2