我使用的是 Long 原始类型,每当我的“generateNumber”方法被调用时,它就会递增 1。如果龙达到他的最大极限会发生什么?会抛出任何异常还是会重置为最小值?这是我的示例代码:
class LongTest {
private static long increment;
public static long generateNumber(){
++increment;
return increment;
}
}
我使用的是 Long 原始类型,每当我的“generateNumber”方法被调用时,它就会递增 1。如果龙达到他的最大极限会发生什么?会抛出任何异常还是会重置为最小值?这是我的示例代码:
class LongTest {
private static long increment;
public static long generateNumber(){
++increment;
return increment;
}
}
Long.MAX_VALUE
是9,223,372,036,854,775,807
。
如果你每纳秒执行一次你的函数,根据这个来源,遇到这种情况仍然需要超过 292 年。
发生这种情况时,它只会环绕到Long.MIN_VALUE
,或者-9,223,372,036,854,775,808
像其他人所说的那样。
它会溢出并环绕到Long.MIN_VALUE
.
不过可能性不大。即使每秒增加 1,000,000 次,也需要大约 300,000 年才能溢出。
超过 long 的最大值不会引发异常,而是会返回。如果你这样做:
Long.MAX_VALUE + 1
您会注意到结果等同于 Long.MIN_VALUE。
范围从 -9,223,372,036,854,775,808 到 +9,223,372,036,854,775,807。
将从 -9,223,372,036,854,775,808 开始
Long.MIN_VALUE.