直到今天,我還以為例如:
i += j;
只是以下方面的捷徑:
i = i + j;
但是,如果我們嘗試這樣做:
int i = 5;
long j = 8;
然后i = i + j;將不會編譯,但i += j;會編譯良好,
這是否意味著實際上i += j;是類似這樣的捷徑 i = (type of i) (i + j)?
解決方案:
與這些問題一樣,JLS保留了答案,在這種情況下,第1.5.26.2節“復合賦值運算子”,摘錄:
形式的復合賦值運算式
E1 op= E2等效于E1 = (T)((E1) op (E2)),其中T是的型別E1,不同之處在于該運算式E1僅被評估一次,
§15.26.2中參考的示例
[...]以下代碼正確:
short x = 3; x += 4.6;并導致x的值為7,因為它等效于:
short x = 3; x = (short)(x + 4.6);
換句話說,您的假設是正確的,
本文首發于java黑洞網,博客園同步更新
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/278360.html
標籤:其他
上一篇:Redis 從入門到使用
