Integer.MAX_VALUE和Integer.MIN_VALUE如何初始化?

时间:2012-10-02 21:23:13

标签: java primitive

这是一个愚蠢的问题。我还在学习,并且彻底地过度思考这种情况。


Integer的源代码中,它显示MIN_VALUEMAX_VALUE声明为:

public static final int MIN_VALUE = 0x80000000;  
public static final int MAX_VALUE = 0x7fffffff;

我的问题是,这些int如何首先被声明?似乎必须知道这些值才能使值开始验证(或溢出或其他)。它显然无法在声明之前自行检查,所以它是如何工作的?

3 个答案:

答案 0 :(得分:5)

  

如何首先声明这些整数?

您正在显示声明它们的两行......

  

似乎必须知道这些值才能验证值

这些常数是已知的,这些是它们的值。

换句话说,int值的限制受限于它们必须适合32位的事实。这两个变量是方便的,但不用于确定int是否应该溢出。

int中定义{{1}}值的范围 - 这些常量仅反映规范:

  

整数类型的值是以下范围内的整数:

     
      
  • [...]
  •   
  • 对于int,从-2147483648到2147483647,包括
  •   

答案 1 :(得分:2)

编译阶段的验证/可能的溢出检查由编译器完成,编译器可能(并且可能具有)硬编码的那些已知值。

换句话说,编译器不需要查看MIN_VALUE或MAX_VALUE来验证程序,这些值只是作为任何常量处理,并且可以将编译器定义为任何值。当然,如果他们被改变了,那么你真正关心常数的程序可能也不会发生变化。

答案 2 :(得分:-1)

在Java中,整数是32位长。根据定义,值0x07ffffff0x08000000是最大和最小可能值。