Operatori aritmetici
Questo tipo di operatori serve a combinare valori numerici, niente di più complicato delle classiche operazioni matematiche.
- +
- è il solito operatore per l'addizione:
4 + 7
è una espressione ammissibile, anchek + 7
se k è una variabile di tipo numerico - -
- con due operandi è la sottrazione, usato nel modo usuale
con un solo operando posto dopo l'operatore è l'inversione di segno - *
- moltiplicazione,
k * m
è una espressione valida se k e m sono due variabili numeriche - /
- quoziente, il risultato della divisione. Se si usano variabili in virgola mobile è il risultato
che ci si aspetta:
15.0 / 4.0
dà come risultato3.75
. Se si usano valori interi il risultato è quello delle divisioni che si facevano alle elementari! (quelle con il resto) quindi:10 / 3
fa3
. - %
- resto della divisione, anche chiamato modulo.
10 % 3
fa1
Il risultato di una operazione (l'applicazione di un operatore) è del tipo più preciso tra quelli coinvolti. Se per esempio sommo due int ottengo un int, se sommo un int e un double ottengo un double.
Quanto vale la seguente espressione?
10 / 6
1giusto
1.66667no, i valori sono interi e il risultato sarà intero
2no, 10 diviso 6 fa 1 (con resto 4 ma questo non importa)
Quanto vale m alla fine del seguente frammento di programma?
int x = 31no, y è double e quindi il risultato è double 1.0no, viene calcolata la divisione compresa la parte decimale 1.5giusto
double y = 2.0;
double m;
m = x / y;
operatori di pre/post incremento
- ++
- se posto prima di una variabile incrementa di uno il suo valore e poi la usa per eseguire il calcolo dell'espressione, se posto dopo i nome della variabile prima usa il valore della variabile stessa per calcolare il resto dell'espressione e poi ne incrementa il valore
- --
- se posto prima di una variabile decrementa di uno il suo valore e poi la usa per eseguire il calcolo dell'espressione, se posto dopo i nome della variabile prima usa il valore della variabile stessa per calcolare il resto dell'espressione e poi ne decrementa il valore
Quanto vale y dopo il seguente frammento di programma?
x = 36esatto, prima calcola l'espressione e poi fa l'incremento 8no, l'incremento viene fatto dopo il calcolo
y = x++ * 2;
Quanto valgono x e y dopo il seguente frammento di programma?
x = 3x=2 e y=6giusto x=3 e y=6no, x viene decrementata x=2 e y=9no, prima viene fatto il decremento della x e poi calcolata l'espressione x=3 e y=9no, va decrementata la x e poi calcolata l'espressione
y = --x * 3;
Espressioni
Viene detta espressione una combinazione di valori, operatori e funzioni da cui si ottiene un nuovo valore. Il tipo dell'espressione è il tipo del risultato ottenuto.Sembra complicato? forse risulterà più semplice facendo alcuni esempi, teniamo conto soltanto delle seguenti dichiarazioni:
int x = 5; int y = 7; double m = 2.00; String s = "11";
E proviamo a vedere alcune espressioni e il loro tipo:
x + y
- Questa espressione combina due informazioni (variabili) di tipo int e quindi è una espressione di tipo int, il suo valore è 12
x * 3
- Questa espressione combina due informazioni (una variabile e una costante) di tipo int e quindi è una espressione di tipo int, il suo valore è 15
4
- Anche questa è una espressione, ha una sola costante di tipo int e quindi è un espressione di tipo int, il suo valore è 4
Integer.parseInt(s)
- Integer.parseInt() è una funzione che da un risultato di tipo int: di nuovo una espressione int, il suo valore è 11
Integer.parseInt(s) + 18
- Integer.parseInt() è una funzione che da un risultato di tipo int, sommato ad un altro int... di nuovo una espressione intera, 29 per la precisione.
y * m
- siccome le due variabili sono di tipi diversi il risultato è del tipo più "ampio", cioè che consente di rappresentare il numero più grande: double, il suo valore è 14.00
(int)(m*1.3)
- m e 1.3 sono double quindi il risultato è double ma c'è un cast: il tipo dell'espressione è int (ma il prodotto viene fatto tra due double quindi è double che poi verrà convertito in int) e il suo valore è 2
y + x++
- tutte variabili int, il suo tipo è int, il valore è 12, questa espressione cambia anche il valore di x che diventerà 6
Precedenza degli operatori
Nelle espressioni del linguaggio linguaggio Java gli operatori hanno la precedenza usuale ma per un riferimento più preciso è disponibile una pagina del tutorial di Oracle.
Nella scrittura delle espressioni per modificare l'ordine in cui vanno eseguite le operazioni possono essere utilizzate soltanto le parentesi tonde.
Quanto vale l'espressione 4+5*2
?
Quale è il tipo dell'espressine 4+5*2
?