2016-09-23 81 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