回答
編程的 「常識」 是x += y
是x = x + y
等效的速記符號。只要x
和y
屬於同一類型(例如,兩者均爲int
s),您可以認爲這兩個語句是等價的。
但是,在Java中,x += y
不是一般與x = x + y
相同。
如果x
和y
屬於不同類型,則由於語言規則,兩種語句的行爲不同。例如,讓我們x == 0
(int)和y == 1.1
(雙):
int x = 0;
x += 1.1; // just fine; hidden cast, x == 1 after assignment
x = x + 1.1; // won't compile! 'cannot convert from double to int'
+=
執行隱式轉換,而對於+
你需要明確地投下第二個操作數,否則,你會得到一個編譯錯誤。從約書亞布洛赫的Java的謎題
報價:
(...)複合賦值表達式自動轉換的 的結果,他們在他們的 左側進行到變量的類型計算。如果結果的類型與變量 的類型相同,則演員陣列不起作用。但是,如果結果的類型比變量的類型寬,則化合物 賦值運算符執行無聲縮小基元 轉換[JLS 5.1.3]。
+1,它必須執行BEFORE賦值。 –
此外,如果'x'是一個更復雜的表達式(比如數組或字段訪問)而不是單個變量,那麼它的組件表達式現在只被計算一次而不是兩次。 –
我所有的教授都說謊:O –
devtop += Math.pow(x[i] - mean, 2);
會增加操作的Math.pow(x[i] - mean, 2)
的結果向devtop
變量。
一個更簡單的例子:
int devtop = 2;
devtop += 3; // devtop now equals 5
devtop += Math.pow(x[i] - mean, 2);
Math.pow(x[i] - mean, 2)
添加到devtop
。
這是assignment operators之一。取值爲x
,將其加0.1,然後將(x + 0.1)的結果存回x
。
所以:
double x = 1.3;
x += 0.1; // sets 'x' to 1.4
它的功能相同,但短於:
double x = 1.3;
x = x + 0.1;
注意:在做浮點運算,事情don't always work the way you think they will。
x += y
是x = x + y
x -= y
是x = x - y
x *= y
是x = x * y
x /= y
是x = x/y
x %= y
x = x % y
是x ^= y
是x = x^y
x &= y
是x = x & y
x |= y
是x = x | y
等等...
怎麼樣= +?它編譯,但什麼都不做 – kommradHomer
@kommradHomer'x = + y'等價於'x = y'。 –
@kommradHomer'x = + y'是'x = 0 + y' –
- 1. | =運算符在Java中做什麼?
- 2. Java中的「+」運算符是做什麼的?
- 3. 「+ =」運算符是做什麼的?
- 4. HAML - 「!=」運算符是做什麼的?
- 5. php運算符「 - =」是做什麼的?
- 6. ^運算符是做什麼的?
- 7. =>運算符是做什麼的?
- 8. '&='和'=&'運算符是做什麼的?
- 9. - =運算符是做什麼的?
- 10. ==〜運算符是做什麼的?
- 11. ^運算符是做什麼的?
- 12. 什麼是Java中的&=運算符
- 13. 在Java中,箭頭運算符' - >'是做什麼的?
- 14. 什麼是Java「= +」運算符?
- 15. 運算符|是什麼?對boost :: la中的vec3做些什麼?
- 16. perl運算符「|| =」做什麼?
- 17. 什麼+運算符做CSS
- 18. 邏輯運算符什麼都不做的名字是什麼?
- 19. 什麼是「?」。運算符在C#中做什麼?
- 20. //和||是什麼?運算符在Perl中做什麼?
- 21. Prolog中的運算符` - >`是做什麼的?
- 22. C#中的/ =運算符是做什麼的?
- 23. Perl中的表示法 - || =運算符是做什麼的?
- 24. Rx.NET中的Wait運算符是做什麼的?
- 25. 在提供的C#代碼中,+ =運算符是做什麼的?
- 26. 「| =」運算符在C#中做什麼?
- 27. +運算符在cout中做什麼?
- 28. 運算符`。*`在matlab中做什麼?
- 29. '/運算符在MATLAB中做什麼?
- 30. 運算符| =在JavaScript中做什麼?
看起來像將一個名爲x的變量加上0.1 .. – Friek
幾乎是一個重複的http://stackoverflow.com/questions/608721/what-is-the-difference-between-double-aa-int-b -and-int-a-double-b – rds