Багато новачків не знають, що таке інкремент і декремент, але впевнені, що всі бачабо використання "
i++
, ++i
, i--
або --i
" в циклі for
. Отже, небагато пояснень.
Що таке інкремент?
Інкремент — це операція у багатьох мовах програмування, яка збільшує змінну. Найчастіше під інкрементом мається на увазі збільшення змінної на 1 одиницю. Оберненою операцією називають декремент. Декремент – це зменшення змінної. Найчастіше також на одиницю. Java інкремент і декремент — це в першу чергу унарні оператори, які застосовуються до будь-якої числової змінної. Інкремент: позначається двома знаками плюс "++
" і збільшує значення змінної на 1. Декремент: позначається двома знаками мінус " --
" і зменшує значення змінної на 1. Приклад:
int x = 10, z = 10;
x++;
z--;
System.out.println("x: " + x + ", z: " + z);
В результаті x
буде інкрементована, а z
декрементована. І в консолі ми побачимо: x: 11
, z: 9
За фактом можна писати і так:
int x = 10, z = 10;
x = x + 1;
z = z - 1;
System.out.println("x: " + x + ", z: " + z);
Але навіщо писати зайве, якщо нам потрібно збільшити чи зменшити змінну лише на 1? Добре, що таке інкрементування і декрементування розібралися, але це ще не все. Інкремент і декремент мають 2 форми — prefix і postfix . О боже що це, подумали ви?) Не лякайтеся: тут теж все легко. Prefix , або Префіксна форма, описується перед змінною " ++x
або --x
", спочатку ікрементує або декрементує змінну. Postfix , або Постфіксна форма, описується після змінної " x++
або "x--
", ікрементує або декрементує змінну після обчислення. Якщо ви звернули увагу на слово обчислення, то зробабо це не дарма, тому що обидві форми працюють однаково, якщо не використовуються у обчисленнях. Ось вам приклад без обчислень:
int x = 10, z = 10;
x++;
++z;
System.out.println("x: " + x + ", z: " + z);
У результаті обидві змінні дорівнюватимуть 11. А ось приклад з обчисленням:
int x = 10, c = 10;
final int y = 13 - x++;
final int z = 13 - ++c;
System.out.println("y: " + y + ", z: " + z);
Як бачимо, обидві змінні " x
і c
" рівні та рівняння аналогічні, АЛЕ використовуються різні форми запису оператора інкременту. В результаті обчислень змінна y буде 3, а ось z
буде 2. Ви вже напевно здогадалися чому, виходячи з того, що написано вище. Якщо ні, то давайте "розжуємо" всі разом. Постфіксна форма спрацює після обчислень, а це означає, що рівняння спрацює так:
x = 10;
// Начало уравнения.
y = 13 - x; // С начала производим вычисление (x все еще 10)
x += 1; // Производим увеличение на 1
// Конец уравнения.
Префіксна ж спрацює так:
c = 10;
// Начало уравнения.
c += 1; // Производим увеличение на 1
z = 13 - c; // Производим вычисление (c уже 11)
// Конец уравнения.
Ну от і вся історія :) Сподіваємось, для вас це було корисно та пізнавально. Успіхів у освоєнні Java ;) Вивчити та попрактикуватися у використанні інкременту, декременту та інших операторів у Java можна на курсі Javarush у квесті Java Multithreading:
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ