为什么Java中这两个不同的整数表示(dec与十六进制)不同?

Bri*_*ian 2 java hex decimal

假设我有两个整数,一个是十进制的,另一个是十六进制的:

int myInt01 = 0xc7d23020;
int myInt02 = 3352440864;
Run Code Online (Sandbox Code Playgroud)

两者都是相同的数字,但是当我尝试将十进制整数分配给Java中的变量时,我得到错误:

error: integer number too large: 3352440864
Run Code Online (Sandbox Code Playgroud)

但是当我将十六进制整数分配给Java中的变量时,一切都按预期工作.

为什么会这样?

Jts*_*Jts 5

那是因为它0xc7d23020被解释为-942526432一个有效的int值,而3352440864显然是一个错误的int值,因为它高于限制2147483647;