使用的是IntelliJ 15.0.3 +的Java 8u65 ...爲什麼 「數字溢出表達」 警告時
lower = System.currentTimeMillis();
long upper = lower + 31536000000L; //add a year-ish
工作正常。但如果我這樣做:
lower = System.currentTimeMillis();
long upper = lower + (1000L*60*60*24*365);
Intellij現在發出警告「表達式中的數值溢出」。我會理解這是否真的如此,並且它始終對兩個表達式都提出警告,但事實並非如此。
任何人都知道爲什麼第二個表達式會生成警告?我寧願將這種方式比數字分解,因爲項目中的其他開發人員更容易理解它在做什麼(儘管我想我可以評論)。代碼仍然編譯顯然,但我發現我的構建像我的癢,我不能劃傷的警告。
編輯 感謝答覆... 我認爲這僅僅是一個的IntelliJ緩存的問題...如果我知道複製/上面我沒有得到警告,粘貼。如果我在粘貼1或2次後嘗試編輯它,我會彈出警告。
是否報警消失,如果你明確地使每個數字很長,而不是僅僅是第一? – JonK
@GordonM 1.它的[tag:java]不是[tag:javascript] 2.數字末尾的'L'表示它是[long](https://docs.oracle.com/javase/7 /docs/api/java/lang/Long.html) – Ferrybig
@JonK no我曾嘗試過 - 但看到編輯,我認爲這只是一個奇怪的緩存問題 –