为什么我不能指定一个'长'值40亿?

Pet*_*ter 34 java file long-integer

我试图在Java中声明一个long值,遗憾的是它不起作用.

这是我的代码.它会导致以下错误消息:"int类型的文字4294967296超出范围".

long bytes = 4294967296;
Run Code Online (Sandbox Code Playgroud)

我需要这个值来制作一个文件过滤器,过滤掉大于4294967296字节(4GB)的文件.反过来工作没有任何问题(long size = file.length())与每个文件大小,这就是为什么我无法弄清楚为什么我的声明不起作用.

ick*_*fay 74

添加L到数字的末尾:

long bytes = 4294967296L;
Run Code Online (Sandbox Code Playgroud)

  • @Peter - 你应该"接受"这个答案. (10认同)

Boz*_*zho 28

要回答您的问题标题,可以通过常量获得long的最大值:

Long.MAX_VALUE
Run Code Online (Sandbox Code Playgroud)

要解决您的问题 - 在数字后添加l(L)文字.


pol*_*nts 19

long文字后跟字母Ll(见:JLS 3.10.1).大写更好,因为它更易读,小写l看起来太相似了1.

对于您的特定数字,它可能更容易编写:

 long bytes = (1L << 32);
Run Code Online (Sandbox Code Playgroud)

通过这种方式,读取代码的人可以快速判断出bytes32的幂是2.


Sou*_*sou 18

尝试long bytes = 4294967296L;向编译器表明您正在使用long.

  • 别客气.只是不要忘记接受答案.:-) (6认同)