我使用 Long 基元类型,每当我的‘ generateNumber’方法调用它时,它都会递增1。如果朗达到了他的极限会怎么样?将抛出任何异常或将重置为最小值? 下面是我的示例代码:
class LongTest { private static long increment; public static long generateNumber(){ ++increment; return increment; } }
它将溢出并包围到 Long.MIN_VALUE。
Long.MIN_VALUE
不太可能。即使你每秒增加1,000,000倍,也需要300,000年才能溢出。
范围从 -9,223,372,036,854,775,808到 + 9,223,372,036,854,775,807。
它将从 -9,223,372,036,854,775,808开始
Long.MIN_VALUE.
超过 long 的最大值不会抛出异常,而是会回滚。如果这样做:
Long.MAX_VALUE + 1
您将注意到,结果等效于 Long.MIN _ VALUE。
从这里: Java 数超过 long.max _ value-如何检测?
Long.MAX_VALUE是 9,223,372,036,854,775,807。
Long.MAX_VALUE
9,223,372,036,854,775,807
根据 这个来源,如果每纳秒执行一次函数,仍然需要292年才能遇到这种情况。
当这种情况发生时,它就会像其他人说的那样,绕到 Long.MIN_VALUE或 -9,223,372,036,854,775,808。
-9,223,372,036,854,775,808