我想问下,为什么我这里的three=one+two.运算出来的结果是0呢?three1既然已经被我赋予one+two不该是10+20是30吗?
理解java中各运算符的优先级即可,一步一步往下执行
经过最后int three6=three1%=one;
最终
three1=0;
three3=30;
three4=300;
three5=30;
three6=0;
程序都是依照顺序结构执行的,即自上而下一步步执行。因此,在你还没有使用System.out.println()的时候,three1的值已经有了多次的变化。第一次的确是30,但后面就又改变了,因为你使用了+=运算符(加上数后再赋值),相比+运算符多了个赋值的变化。具体情况分析,参照楼上同学。
可是后面那些three1+=one、three1-=one、three1*=one....语句都是先对three1进行复合赋值操作,再把three1赋值给左边的变量...最后一个操作也就是three1%=one让three1的值变为0了
因为数据都被定义成的静态变量 (static)