Java Long原始类型最大限制

时间:2013-03-19 16:46:08

标签: java

我正在使用Long基元类型,只要我的'generateNumber'method调用,它就会递增1。如果Long达到他的最大限制会发生什么?会抛出任何异常还是会重置为最小值? 这是我的示例代码:

class LongTest {
   private static long increment;
   public static long generateNumber(){
       ++increment;
       return increment;
   }
}

4 个答案:

答案 0 :(得分:339)

Long.MAX_VALUE9,223,372,036,854,775,807

如果你每纳秒执行一次你的功能,根据this source,遇到这种情况仍需要292年。

当发生这种情况时,它会像其他人所说的那样绕回Long.MIN_VALUE-9,223,372,036,854,775,808

答案 1 :(得分:43)

它会溢出并环绕到Long.MIN_VALUE

虽然不太可能。即使你每秒增加1,000,000次,也需要大约30万年才能溢出。

答案 2 :(得分:9)

范围从-9,223,372,036,854,775,808到+9,223,372,036,854,775,807。

它将从-9,223,372,036,854,775,808开始

Long.MIN_VALUE.

答案 3 :(得分:9)

超过long的最大值并不会抛出异常,而是会反过来。如果你这样做:

Long.MAX_VALUE + 1

你会注意到结果相当于Long.MIN_VALUE。

从这里开始:java number exceeds long.max_value - how to detect?