Максимальный предел примитивного типа Java Long

Я использую длинный примитивный тип, который увеличивается на единицу при каждом вызове метода generateNumber. Что произойдет, если Long достигнет максимального предела? выбросит любое исключение или будет reset до минимального значения? вот мой пример кода:

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

Ответ 1

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

Если вы выполняли свою функцию один раз за наносекунду, для этой ситуации потребовалось бы более 292 лет в соответствии с этим источником.

Когда это произойдет, оно просто обернется к Long.MIN_VALUE или -9,223,372,036,854,775,808, как говорили другие.

Ответ 2

Он переполнится и обернется до Long.MIN_VALUE.

Это не слишком вероятно. Даже если вы увеличиваете 1,000,000 раз в секунду, для переполнения потребуется около 300 000 лет.

Ответ 3

При превышении максимального значения long не генерирует исключение, вместо этого оно возвращается обратно. Если вы это сделаете:

Long.MAX_VALUE + 1

вы заметите, что результат эквивалентен Long.MIN_VALUE.

Отсюда: число java превышает long.max_value - как определить?

Ответ 4

Диапазон от -9,223,372,036,854,775,808 до +9,223,372,036,854,775,807.

Он начнется с -9,223,372,036,854,775,808

Long.MIN_VALUE.