回答
形式
E1 op= E2
的化合物賦值表達式是等效於E1 = (T) ((E1) op (E2))
,其中T
是E1
類型,不同之處在於E1
是隻評估一次。
的最後一句是很重要的,如果左側有副作用:
array[i++] += 1;
這是不等同於:
array[i++] = array[i++] + 1;
第一個表達式將遞增i
一次。第二個將增加i
兩次,並將右邊的值分配給array
的不同元素,而不是第一個表達式。
我要指出的是,這幾樣副作用的語句都沒有很好的編程形式儘管你經常會發現他們使用。
它是以下簡寫:
a = a + 1;
x += y;
相當於
x = x + y;
存在用於其他數學運算類似的運算符: - =,* =,/ =。例如:
x *= y;
相當於
x = x * y;
(編輯:上述假設不存在「副作用」在X;即,預增量或後置運算符被修改以反映泰德霍普的點。 )
它相當於
a = a + 1;
不完全等同。例如,如果'a'是'byte'或'short',那麼'a + = 1'是合法的,但'a = a + 1'不起作用。問題是'a + 1'是一個'int',所以它必須通過一個cast來縮小,然後才能再次分配給'a'。 –
哇!我沒有想到它!好評! :) – user278064
- 1. %,這意味着
- 2. Java中的空間意味着什麼?
- 3. 差異意味着
- 4. 聲明意味着
- 5. 結腸在Java中意味着什麼?
- 6. '...'在java中意味着什麼?
- 7. 分配時&& do /意味着什麼? JAVA
- 8. 「SomeClass.this」在java中意味着什麼?
- 9. tmp_xxx在java中意味着什麼?
- 10. @符號在java中意味着什麼?
- 11. 「| =」在Java中意味着什麼?
- 12. 「x =(something)」在java中意味着什麼?
- 13. 「this.x」在java中意味着什麼?
- 14. 這些Java錯誤意味着什麼?
- 15. $$ _ Javasassist_11在java中意味着什麼?
- 16. 這個java泛型意味着什麼?
- 17. 什麼-Dauto意味着
- 18. 計算意味着處理NaN意味着
- 19. 在AngularJS中結尾意味着什麼double意味着
- 20. 什麼呢JDBC:HSQLDB:hsqlTempFiles意味着
- 21. 的ViewController = _ViewController意味着
- 22. typedef的變化意味着
- 23. 什麼?意味着iOS的
- 24. 意味着基於矩陣
- 25. %是什麼〜DP0意味着
- 26. 意味着對數據幀
- 27. 什麼%*%意味着R中
- 28. {} \;意味着在unix命令?
- 29. rollapply改性意味着
- 30. 這是&意味着什麼?
+1。我沒有想到這一點。編輯我的答案以反映這一點。 –