1 int整數相乘溢出 2 3 咱們計算一天中的微秒數: 4 5 long microsPerDay = 24 * 60 * 60 * 1000 * 1000;// 正確結果應爲:86400000000 6 System.out.println(microsPerDay);// 實際上爲:500654080 7 8 9 問題在於計算過程當中溢出了。這個計算式徹底是以int運算來執行的,而且只有在運算完成以後,其結果才被提高爲long,而此時已經太遲:計算已經溢出。 10 解決方法使計算表達式的第一個因子明確爲long型,這樣能夠強制表達式中全部的後續計算都用long運算來完成,這樣結果就不會溢出: 11 12 long microsPerDay = 24L * 60 * 60 * 1000 * 1000;