Inkrementacja i dekrementacja to operacje powodujące odpowiednio zwiększenie lub zmniejszenie wartości podanego argumentu o jeden. Te dwa operatory wykorzystywane są bardzo często do skrócenia zapisu np. w pętlach.
Zapis skrócony | Pełen zapis |
---|---|
i++ | i = i+1; |
i– | i = i-1; |
Post i pre – inkrementacja
Inkrementacja zwiększa wartość zmiennej o jeden i występuje w dwóch formach: post i pre.
- Postinkrementacja najpierw zwraca wartość zmiennej, a dopiero potem ją modyfikuje;
int value = 10; System.out.println(value++);
Powyższy kod wyświetli liczbę: 10, ale po jego wykonaniu zmienna będzie miała wartość = 11.
- Preinkrementacja najpierw modyfikuje wartość i dopiero wtedy ją zwraca.
int value = 10; System.out.println(++value);
Powyższy kod wyświetli liczbę: 11, i po jego wykonaniu zmienna value też będzie miała wartość = 11.
Dekrementacja
Dekrementacja zmniejsza wartość zmiennej o jeden i podobnie jak inkrementacja występuje w 2 formach: post i pre.
- Postdekrementacja najpierw zwraca wartość zmiennej, a dopiero potem ją modyfikuje;
int value = 10; System.out.println(value--);
Powyższy kod wyświetli liczbę: 10 ale po jego wykonaniu zmienna będzie miała wartość = 9.
- Predekrementacja najpierw modyfikuje wartość i dopiero wtedy ją zwraca.
int value = 10; System.out.println(--value);
Powyższy kod wyświetli liczbę: 9 i po jego wykonaniu zmienna value też będzie miała wartość = 9.
Zadanie do samodzielnego rozwiązania
Dla chętnych zostawiam zadanie do samodzielnego rozwiązania. Ponieważ post- i preinkrementacja w połączeniu z kolejnością wykonywania działań może niejedną osobę przyprawić o porządny ból głowy, zachęcam do samodzielnego rozwiązania poniższego zadania w celu weryfikacji i utrwalenia swoich umiejętności.
int a,b=13,c; a=++b*2; c=a++ + b; b=++a + a-- - c++ - --c; System.out.println("a="+a+", b="+b+", c="+c);
Wynik zadania
Wynik zadania jest poniżej w kolorze tła. Nie psuj sobie zabawy i spróbuj najpierw sam rozwiązać to zadanie.
a=29, b=-24, c=42