问答详情
源自:3-3 Java中的赋值运算符

关于three=one+two的问题

http://img.mukewang.com/57efb6290001b4d304440583.jpg

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

提问者:慕雪1790920 2016-10-01 21:20

个回答

  • 明明爱你cy
    2016-10-01 22:03:51
    已采纳

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

    http://img.mukewang.com/57efc1b80001b02008340328.jpg

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

    最终

    three1=0;

    three3=30;

    three4=300;

    three5=30;

    three6=0;


  • Veahow
    2016-10-01 22:59:40

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

  • 食己少女
    2016-10-01 21:51:47

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

  • 轩墨然
    2016-10-01 21:51:38

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