Почему ключевое слово «new» намного эффективнее, чем назначение?

Здесь я хотел бы упомянуть понятие целочисленных часов. Максимальные и минимальные значения для int в java: int MAX_VALUE = 2147483647 int MIN_VALUE = -2147483648

, пожалуйста, проверьте следующие результаты

 int a = 2147483645;
 for(int i=0;i<10;i++) {
    System.out.println("a:"+ a++);
 }

Выход:

a:2147483645
a:2147483646
a:2147483647
a:-2147483648
a:-2147483647
a:-2147483646
a:-2147483645
a:-2147483644
a:-2147483643
a:-2147483642

Это показывает, что, когда вы выходите за пределы диапазона + ve целого числа, следующие значения снова начинаются с отрицательного начального значения.

 -2147483648,       <-----------------
 -2147483647,                        | 
 -2147483646,                        |  
  .                                  |
  .                                  |
  .                                  |    (next value will go back in -ve range)
  0,                                 |
 +1,                                 |
 +2,                                 |   
 +3,                                 |
  .                                  |
  .                                  |
  .,                                 |
 +2147483645,                        |    
 +2147483646,                        | 
 +2147483647     ---------------------

Если вы вычислите факториал 13, то это 6227020800. Это значение выходит за пределы диапазона java. Таким образом, новое значение будет

        6227020800
      - 2147483647 (+ve max value)
   -----------------
Value = 4079537153
      - 2147483648 (-ve max value)  
   -----------------
value = 1932053505
   -             1  (for zero in between -ve to +ve value)
  ----------------
Answer = 1932053504

Итак, в вашем ответе факториал 13 приходит 1932053504. Вот как работают часы с целым числом.

Вы можете использовать длинный тип данных вместо целых чисел достигните своей цели. Для любых запросов вы можете разместить здесь.

13
задан Steven Spasbo 28 December 2013 в 07:29
поделиться