  |
Operatori di incremento e decremento |
vediamo adesso degli operatori che potrebbero anche non esistere. Quello che fanno infatti si può ottenere usando altre operatori che abbiamo già visto. Il loro uso e la loro utilità si ha per la convenienza, in quanto consentono di fare in maniera sintetica delle operazioni molto frequenti nella programmazione, e in particolare nei cicli. Usandoli si può scrivere del codice compatto, e quando ci si prende l'occhio anche più leggibile. Alcuni programmatori considerano il linguaggio C (da cui deriva Java) illeggibile proprio per la presenza di queste operatori, ma in realtà, se usati appropriatamente, la aumentano (ovviamente gli occhi di chi conosce il C e il Java).
  |
Classici del C:
++ incremento di 1
-- decrementodi 1 |
Gli operatori ++ e -- sono operatori che effettuano un incremento o un decremento. Si tratta essenzialmente di operatori con effetti collaterali. Per esempio scrivere ++a è (all'incirca) come scrivere a = a + 1, mentre scrivere --a è come scrivere a = a - 1. Si tratta però di operatori: ovvero dopo aver fatto il calcolo ritornano anche un valore. Se vi ricordate quando abbiamo parlato di a = 1, abbiamo detto che si tratta di un operatore che ritorna un valore (1) e causa un effetto collaterale (assegna uno ad a). Allo stesso modo ++a ritorna un valore, che è a incrementato di 1, ma ha anche l'effetto collaterale di lasciare questo valore incrementato in a. Quindi tipo dire che ++a incrementa a e ritorna il valore incrementato. Stesso discorso (mutatis mutandis) per --a.
  |
operano su interi e float |
queste operatori possono essere applicati sostanzialmente a numeri, in particolare numeri interi è in virgola mobile.
  |
Possono essere prefissi o postfissi: |
un'altra caratteristica di queste operatori è il fatto che in realtà sono quattro e non due. Il comportamento infatti è diverso a secondo se vengono messi prima o dopo il loro operando. Cioè se sono prefissi (++a --a) o postfissi (a++ a--). La differenza tra prefisso e postfisso è che nel primo caso viene prima effettuato l'incremento, e poi restituito il valore; nel secondo caso viene invece prima restituito il valore e poi effettuato l'incremento.
| Prefisso |
Postfisso |
| a = 1 ; |
a = 1 ; |
| b = a++; |
b = ++a; |
Risultato: b==1 e a==2 |
Risultato: b==2 e a==2 |
Nella tabella è illustrato con un esempio quello che succede. Se un operatore è postfisso, alla fine b vale 1, perché ha preso il valore di a prima dell'incremento; se l'operatore è usato prefisso, alla fine a vale 2, perché prende il valore di a dopo l'incremento. In entrambi i casi alla fine a risulta incrementato e quindi vale 2.
|