Java中的 int 數據溢出


數據溢出

當某一種類型的數值達到此類型能夠保存的最大(小)值之后,繼續擴大(縮小),就會出現數據溢出問題。

int x = Integer.MAX_VALUE; // 得到整型的最大值 
System.out.println("x = "+x);
System.out.println("x+1 = "+(x+1)); 
System.out.println("x+2 = "+(x+2)); 

輸出結果: 
x = 2147483647 
x+1 = -2147483648 
x+2 = -2147483647 

當最大值加上 1 時,結果變成Integer范圍中最小的值,

當最大值加上 2 時,結果變成Integer范圍中第二小的值,這就發生了數據溢出。

若是想避免發生數據溢出,程序中就必須加上數值范圍的檢查,或者使用比Integer表示范圍更大的數據類型,如Long。

為了避免 int 類型的溢出,可以在表達式中的任一常量后加上大寫的 L,或是在變量前面加上 long,進行強制類型轉換。

// 當程序發生數據溢出之后,可用強制類型進行轉換 
int x =Integer.MAX_VALUE ; 
System.out.println("x = "+x); 
System.out.println("x + 1 = "+(x+1)); 
System.out.println("x + 2 = "+(x+2L)); 
System.out.println("x + 3 = "+((long)x+3)); 

輸出結果: 
x = 2147483647 
x + 1 = -2147483648 
x + 2 = 2147483649 
x + 3 = 2147483650


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM