133 votes

Limite maximale du type primitif long de Java

J'utilise le type primitif Long qui s'incrémente de 1 à chaque fois que ma méthode 'generateNumber' est appelée. Que se passe-t-il si le Long atteint sa limite maximale ? Est-ce qu'une exception sera levée ou est-ce que la valeur minimale sera rétablie ? Voici mon exemple de code :

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

417voto

Chris Points 4359

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

Si vous exécutiez votre fonction une fois par nanoseconde, il faudrait quand même plus de 292 ans pour rencontrer cette situation selon cette source .

Quand ça arrive, ça va juste s'enrouler autour de Long.MIN_VALUE o -9,223,372,036,854,775,808 comme d'autres l'ont dit.

46voto

Zutty Points 2733

Il débordera et s'enroulera autour de Long.MIN_VALUE .

Mais c'est peu probable. Même si vous incrémentez 1 000 000 de fois par seconde, il faudra environ 300 000 ans pour déborder.

9voto

TGMCians Points 11195

La fourchette va de -9 223 372 036 854 775 808 à +9 223 372 036 854 775 807.

Il commencera à partir de -9 223 372 036 854 775 808.

Long.MIN_VALUE.

9voto

jsedano Points 1708

Le dépassement de la valeur maximale d'un long n'entraîne pas d'exception, mais plutôt un retour en arrière. Si vous faites cela :

Long.MAX_VALUE + 1

vous remarquerez que le résultat est l'équivalent de Long.MIN_VALUE.

D'ici : Un nombre java dépasse long.max_value - comment le détecter ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X