天天看點

關于"+=" 的問題

自動類型提升的内容我就不贅述了

隻說一下 += 運算符的内容

類似于下面的問題:

short s = 1;

s += 3.5;

在Java規範中對這種複合的指派運算符有如下說明

對于 E1 op= E2 的運算,等價于

E1 = (T)((E1) op (E2))

op可以了解為操作符,即

s += 3.5 的運算等價于  s = (short)((s + 3.5))

這樣大家就應該對這個運算為什麼能通過可以了解了吧。

s + 3.5的結果是什麼類型,可以用自動類型提升的規則得到

然後又做了強制類型轉換,是以編譯可以通過

但是建議大家對這樣的文法減少使用,這會造成不必要的錯誤,如:

short s = 32767;

s += 10;

這樣的語句在編譯期是沒有錯誤的,但運作時會出現負值,與預期結果不一樣,檢查起來也比較複雜。

僅作面試隻用,o(∩_∩)o...

本文轉自 wws5201985 51CTO部落格,原文連結:http://blog.51cto.com/wws5201985/814847,如需轉載請自行聯系原作者