黑马程序员技术交流社区
标题:
自加,自减
[打印本页]
作者:
风飘逸
时间:
2015-3-24 21:30
标题:
自加,自减
int num = 1;boolean b =( num++ == 2),为什么是false,但是num的输出值是2
作者:
Hksangs
时间:
2015-3-24 21:50
加号在后面,先参与运算再子增的。
作者:
@G00DMaN
时间:
2015-3-25 00:25
num++这个表达式具有1这个值,1 == 2不成立,所以b的值为false,num++还有一个副作用就是num的值为2,
作者:
浓眉小眼
时间:
2015-3-25 00:57
boolean b =(( num++) == 2)
这样写就好了,安心,不用担心那个先的问题
作者:
罗晓飞
时间:
2015-3-25 08:23
下一次才会自加。。。
作者:
青默
时间:
2015-3-25 09:08
++num就解决了 ,先+在==
作者:
nether009
时间:
2015-3-25 10:05
加号在后 先用后加的
作者:
natsu647
时间:
2015-3-25 11:48
++num ;//先自加,再参与运算
num++ ;//先参与运算,再自加
boolean b =( num++ == 2);
可以等效于
boolean b =( num == 2);
num = num + 1 ;
作者:
ws748264
时间:
2015-3-25 12:15
加号在后面,先运算再自增的
作者:
One_M
时间:
2015-3-25 12:25
num 先判断==2 ?? 然后在自增1 所以 1==2 false
作者:
超级小白
时间:
2015-3-25 12:44
① ==运算是在栈内存中进行的。boolean b的值是在栈内存中被赋予的。
② ++运算不需要入栈,就是说不经过栈内存。( 直接给变量num进行自增运算,是在储存变量的方法区中进行的。所以num的值是在方法区中改变的。)
③ 运算优先级请参照书上表格。
④栈内存里存的值都是临时的,当进行下一行代码时,上一行代码的变量在栈里就被清空了。
⑤但之所以你可以在后面代码取到上一行的变量的值,比如打印System.out.print(num); 是因为“=”的赋值操作,会把栈里的变量值存放到了方法区里。这样就达到了持久存放的目的。
暂时看不懂不要紧。等学完java基础之后,就能明白这些了。
作者:
邓熊财
时间:
2015-3-25 17:52
先在大括号里算完num==2以后再才加1的
作者:
福娃51zx
时间:
2015-3-25 19:11
因为先输出再加1,即先比较再加1,把num++改成++num就输出true
作者:
luoyu1530
时间:
2015-3-25 22:42
这个要看自加和自减是在哪
在前面,先加/减。在运算,在后面,先运算,在加/减
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2