这很奇怪。
我写的一个类有以下数据成员:
final static long MAX_FILE_SIZE_BYTES = 50000000000L;
在我的代码中的某一点上运行以下块
System.out.println("MAXFILESIZEBYTES: " + MAX_FILE_SIZE_BYTES);
,输出为:
MAXFILESIZEBYTES: -1539607552
我的问题是,为什么这个长值溢出? Java应该是与机器无关的,并且long应该保持64位。是什么给了什么?
答案 0 :(得分:4)
无法重现。
50000000000L是0x0000000BA43B7400。
-1539607552是FFFFFFFFA43B7400,如果将值转换为int.
Ergo 某处你将它投射到int.
也许你有一个阴影变量。