2013-03-19 18 views
86

Używam typu Long prymitywny, który zwiększa się o 1, ilekroć moja metoda "generateNumber" wywoływana. Co się stanie, jeśli Long osiągnie maksymalny limit? rzuci jakiś wyjątek lub zresetuje do wartości minimalnej? tutaj jest mój przykładowy kod:Maksymalny limit Java Long prymitywny

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

Dość duży zakres - '8 bajtów podpisanych (uzupełnienie dwóch). Zakres od -22 223 372 036 854 775 808 do + 9 223 372 036 854 775 807. Http://www.cafeaulait.org/course/week2/02.html – Coffee

+2

Po osiągnięciu maksymalnej wartości, następna wartość zostanie przeniesiona na wartość minimalną. – Smit

Odpowiedz

278

Long.MAX_VALUE jest 9,223,372,036,854,775,807.

Jeśli wykonywałeś swoją funkcję jeden raz w ciągu nanosekundy, to w związku z tą sytuacją upłynąłoby 292 lata, zgodnie z this source.

Kiedy to się stanie, po prostu obejdzie się na Long.MIN_VALUE lub -9,223,372,036,854,775,808, jak powiedzieli inni.

+201

To piekielne źródło. – Preston

+28

Najmniej istnieje szansa, że ​​źródło nie wygaśnie. –

+3

Podoba mi się źródło !! – fareed

37

będzie przepełnienie i owinąć dookoła do Long.MIN_VALUE.

To nie jest zbyt prawdopodobne. Nawet jeśli zwiększysz 1 000 000 razy na sekundę, upłynie około 300 000 lat.

+15

"Nawet jeśli zwiększysz 1 000 000 razy na sekundę, upłynie około 300 000 lat." MIŁY! – jsedano

7

Zakres od -9,223,372,036,854,775,808 do +9,223,372,036,854,775,807.

To rozpocznie się od -9.223.372.036.854.775.808

Long.MIN_VALUE. 
Powiązane problemy