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

ast*_*eri 0 java primitive

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


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

public static final int MIN_VALUE = 0x80000000;  
public static final int MAX_VALUE = 0x7fffffff;
Run Code Online (Sandbox Code Playgroud)

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

ass*_*ias 5

这些注明如何首先被声明?

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

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

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

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

int值范围在Java语言规范#4.2.1中定义- 这些常量仅反映规范:

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

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