java自增自减很难理解_关于java中自增,自减,和拓展运算符的小讨论
java中運算符很多,但是能深入討論的不算太多。這里我僅僅以++,*=為例做討論。
例:++
i=0;
i=i++ + ++i;//i=1
i=++i+i++;//i=2
i=i++ -++i;//i=-2
因為++運算符遵循的規則:++在前是先計算,后使用;++在后是后計算,先使用;
以i=++i+i++;詳解:
先++i,結果是先i加1,再產生i的一份拷貝做為下一步運算的值,假設拷貝為i_copy1,那么++i以后i_copy1的值為1,i值為1.
再i++,結果是產生一份i的拷貝做為下一步運算的值,然后i加1,假設拷貝為i_copy2,那么i++以后i_copy2的值為1,i值為2.
最后"+"運算符的作用是i_copy1+i_copy2,根據上面推論結果為1+1=2;
==========================================================
--運算同++;
==========================================================
關于拓展運算符;
首先:
char a;
a+=b~a=a+b
a+=b == (char)(a+b);
拓展運算符不改變數據類型
byte i=10;
i=i+10;//錯誤,右邊是int型
i+=1000;//仍然是byte型,但是精度嚴重損失;
另一個要注意的是拓展運算符的運算順序;
例:
int x=5;
int b=x*=x/=x+x;//拓展賦值運算同一個算式中,x的值不會變;//如果是同一個算式中從左往右++,--,x的值每一步都會改變;
System.out.println(b);
這題輸出為0;因為計算機中,賦值是從右往左賦值的;所以多個拓展運算在一個算式中的時候,從右往左計算 x+x=10;5/10=0;5*=0--->0;
總結
以上是生活随笔為你收集整理的java自增自减很难理解_关于java中自增,自减,和拓展运算符的小讨论的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 10电动车续航久一点的该怎么选?
- 下一篇: 比亚迪APP企业资料提交,显示证件有到期