2016-09-23 74 views
-1

我有以下的Java代碼片段:Java int的VS整數 - 不同範圍

int begin=Integer.MAX_VALUE-10; 
int end=Integer.MAX_VALUE; 

for(int i=begin;i<=end;i++){ 
    System.out.println("hehe"); 
} 

該代碼段會無限地跑,我能理解,這是因爲

i<**=**end 

但有些人說, intInteger有不同的範圍。這是真的嗎?爲什麼?

+0

'int'和'Integer'不具有不同的範圍。 'Integer'就是'int',它周圍有一個類。 – khelwood

+0

不正確。 'Integer'裏面有一個'int'字段,並用'intValue'暴露它 –

+3

不,它不是真的。有些人說了很多錯誤的東西。有些人甚至在StackOverflow上發佈錯誤的東西。 – Kayaman

回答

6

intInteger具有完全相同的範圍。

程序無限運行,因爲當您將1添加到Integer.MAX_VALUE時,會發生數字溢出,結果將爲Integer.MIN_VALUE。而這又小於Integer.MAX_VALUE

如果這是實際的問題,我建議你使用longLong,而不是intInteger

+0

我明白了,謝謝,只是被一條消息所迷惑。請看我以前的帖子的評論。謝謝 – avalon