java无法处理32位数

Pub*_*oda 2 java int types long-integer

我试图将4294967295指定为长期.即(2 ^ 32-1)java(netbeans)给出以下错误消息"整数太大"

事实上,我试图找出一个int可以处理的最大数字(手动手动完成)并发现它是2147483647(当然显然它是2 ^ 31-1)

但令人惊讶的是,我发现即使是长型也无法处理比这更大的数字.int和long之间没有任何区别吗?java doc说long是64位

我错过了什么吗?

Jon*_*eet 11

问题是你使用4294967295作为int文字 - 但它不是一个有效的int值.你希望它是一个long文字,所以你需要在其上L加上后缀.这可以:

long x = 4294967295L;
Run Code Online (Sandbox Code Playgroud)

JLS第3.10.1节:

如果整数文字后缀为ASCII字母L或l(ell),则整数文字的长度为long; 否则它的类型为int(§4.2.1).