为了账号安全,请及时绑定邮箱和手机立即绑定

关于three=one+two的问题

http://img1.sycdn.imooc.com//57efb6290001b4d304440583.jpg

我想问下,为什么我这里的three=one+two.运算出来的结果是0呢?three1既然已经被我赋予one+two不该是10+20是30吗?

正在回答

4 回答

理解java中各运算符的优先级即可,一步一步往下执行

http://img1.sycdn.imooc.com//57efc1b80001b02008340328.jpg

经过最后int three6=three1%=one;

最终

three1=0;

three3=30;

three4=300;

three5=30;

three6=0;


5 回复 有任何疑惑可以回复我~
#1

慕雪1790920 提问者

非常感谢!
2016-10-02 回复 有任何疑惑可以回复我~
#2

慕粉4021294 回复 慕雪1790920 提问者

vvbb
2016-10-08 回复 有任何疑惑可以回复我~

程序都是依照顺序结构执行的,即自上而下一步步执行。因此,在你还没有使用System.out.println()的时候,three1的值已经有了多次的变化。第一次的确是30,但后面就又改变了,因为你使用了+=运算符(加上数后再赋值),相比+运算符多了个赋值的变化。具体情况分析,参照楼上同学。

0 回复 有任何疑惑可以回复我~

可是后面那些three1+=one、three1-=one、three1*=one....语句都是先对three1进行复合赋值操作,再把three1赋值给左边的变量...最后一个操作也就是three1%=one让three1的值变为0了

0 回复 有任何疑惑可以回复我~

因为数据都被定义成的静态变量 (static)

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

关于three=one+two的问题

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号