我正在使用long原始类型,每当调用我的“generateNumber”方法时它就会增加1。如果long达到最大限制,会发生什么?会抛出任何异常还是会重置为最小值? 以下是我的示例代码:
class LongTest {
private static long increment;
public static long generateNumber(){
++increment;
return increment;
}
}
我正在使用long原始类型,每当调用我的“generateNumber”方法时它就会增加1。如果long达到最大限制,会发生什么?会抛出任何异常还是会重置为最小值? 以下是我的示例代码:
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年才能溢出。
范围从-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.MAX_VALUE + 1
8字节的有符号整数(二进制补码)。范围从-9,223,372,036,854,775,808到+9,223,372,036,854,775,807。
http://www.cafeaulait.org/course/week2/02.html - Caffeinated