Corso di Java

Operatori aritmetici

 

Java comprende 5 operatori per l’aritmetica di base, come mostrato nella tabella seguente:

OPERATORE

SIGNIFICATO

ESEMPIO

+

Somma

1 + 2

-

Sottrazione

10 - 5

*

Moltiplicazione

2 * 8

/

Divisione

16 / 4

%

Modulo

33 % 17


Tutti gli operatori richiedono due operandi, uno a destra e uno a sinistra, e permettono di realizzare le istruzioni aritmetiche fondamentali nella forma che tutti conosciamo.
Un’attenzione particolare merita l’operazione di divisione, che genera un intero se entrambi gli operandi appartengono ad uno dei tipi interi, o un numero in virgola mobile se gli operandi sono float o double; inoltre la divisione tra interi genera un numero intero, arrotondando il risultato se necessario.

Ad es. il programma:

class TestDivisione {
    public static void main(String args[]) {
                short i = 7;
                short j = 3;
                System.out.println(i/j);
    }
}


stampa a video il numero 2, in quanto l’operazione di divisione produce un valore non intero (2.33) che viene arrotondato troncando la parte decimale.

Il modulo, che utilizza l’operatore %, restituisce il resto di una divisione, ad es. 33 % 17 restituisce 16, perché il numero 17 sta una volta nel numero 33 con resto di 16.
E’ bene ricordare che la maggior parte delle operazioni che coinvolgono interi produce un tipo int indipendentemente dal tipo di operandi originari, cosicché spesso è necessario ricorrere al casting per effettuare assegnamenti a variabili di tipo più ristretto (ad es. byte o short).

Riguardo all’assegnamento, Java consente di legarne più di uno in un’unica istruzione del tipo:

x = y = z = 7;


Nel codice di esempio viene assegnato a z il valore 7, a y il nuovo valore di z (quindi 7) e a x il nuovo valore di y (sempre 7); ciò avviene perché la parte destra di un’espressione di assegnamento viene valutata prima di eseguire l’assegnamento stesso.
Sebbene questa rappresenti una buona possibilità per rendere il codice più compatto, ne viene comunque sconsigliato l’uso, perché può rendere più difficile la comprensione del programma.

Utilizzare un’espressione per modificare il valore di una variabile è un’operazione molto comune alla quale si deve ricorrere e in Java esistono degli operatori utilizzati appositamente per questo scopo, come mostrato nella tabella seguente:

ESPRESSIONE

SIGNIFICATO

x += y

x = x + y

x -= y

x = x - y

x *= y

x = x * y

x /= y

x = x / y

x %= y

x = x % y


Queste forme abbreviate sono molto comode ed equivalgono funzionalmente alle istruzioni di assegnamento, ma se si utilizzano espressioni complesse, possono verificarsi casi in cui gli operatori non sono equivalenti, per cui è opportuno, in tali casi, non ricorrere alle forme abbreviate.
Ad es. le due istruzioni:

x = x / y + 5 ;
x /= y + 5 ;


non producono lo stesso risultato: infatti nel primo caso viene prima eseguita la divisione e poi la somma, mentre nel secondo caso viene prima eseguita la somma e poi la divisione.

Altri due operatori sono il minus unario e il plus unario, che vengono utilizzati premettendo, rispettivamente, il segno - e il segno + al nome della variabile.
Il minus unario restituisce il valore della variabile che precede con segno opposto; il plus unario fornisce l’operazione simmetrica a quella precedente e non sortisce, a conti fatti, nessun effetto, poiché restituisce inalterato il valore della variabile che lo segue.
Il codice:

int x = 5;
int y = -x;
int z = +x;


inizializza x al valore 5, assegna il valore –5 a y e il valore 5 (identico a quello di x) a z.

Infine sono molto utilizzati gli operatori di incremento (++) e decremento (--), che permettono, rispettivamente, di aggiungere e sottrarre 1 al valore della variabile.

Possono essere usati in notazione prefissa o suffissa, cioè precedere o seguire il nome della variabile che modificano.
Questa differenza ha importanza implementativa, perché la notazione prefissa incrementa il valore della variabile prima di valutare l’espressione alla quale la variabile appartiene, mentre la notazione suffissa esegue prima la valutazione
dell’espressione e dopo incrementa la variabile.
Ad es. il codice:

int x, y ,z;     
x = 18;
y = x++;
z = ++x;

inizializza x, assegna a y il valore 18 e incrementa x, dopodiché incrementa x e assegna a z il suo nuovo valore, cioè 20. Nella prossima puntata analizzeremo gli operatori logici.

 

Torna all'indice Generale del corso di Corso di Java di Software Planet