OPERATORI IN JAVA
Un operatore è un simbolo specifico di un linguaggio di programmazione che consente di eseguire una determinata operazione. Un operatore agisce sempre su un insieme di elementi detti operandi.
Nell’esempio puoi vedere l’operatore + che agisce su due operandi. Come vedremo è possibile unire tra loro più operatori, in questi casi occorre stabilire una precedenza tra gli operatori. La precedenza è una regola che stabilisce che alcuni operatori hanno priorità su altri. Quando poi ci troviamo in operazioni composte in cui gli operatori hanno la stessa precedenza entra in azione l’associatività. Essa determina in quale ordine verranno presi in considerazione gli operatori. In realtà ne esistono due tipi:
Nel primo caso viene eseguito l’operatore che sta più a sinistra poi l’operatore che sta a destra. Nel secondo caso è l’inverso. La maggior parte degli operatori sono binari, cioè lavorano su una coppia di operandi come l’operatore +. Altri operatori lavorano su un solo operando, come l’operatore – che serve a invertire il segno di un operando. Nelle operazioni composte è possibile alterare la precedenza e l’associatività con le parentesi tonde come vedremo. Facciamo subito un esempio.
5 + 3 * 2 = 11
In questo caso l’operatore di moltiplicazione ha precedenza rispetto all’operatore somma; quindi, prima viene effettuato il calcolo 3 * 2 e poi la somma. Se vogliamo cambiare questo comportamento basta mettere le parentesi tonde ed eseguire prima la somma poi la moltiplicazione.
(5 + 3) * 2 = 16
L’OPERATORE DI ASSEGNAMENTO SEMPLICE
Lo abbiamo incontrato più volte ed era rappresentato dal simbolo di uguale. Questo è l’operatore che dobbiamo utilizzare per assegnare un valore a una variabile o a una costante.
myVar = 150;
Per essere più precisi dobbiamo dire che l’operatore di assegnamento semplice assegna un valore o espressione che si trova alla sua destra alla variabile o costante che viene posta a sinistra del simbolo di uguale.
Un’espressione è un’operazione semplice o composta valutata durante l’esecuzione del programma (Runtime) e che produce sempre un valore. Un’espressione può essere un valore literal oppure una variabile che ritorna il valore associato in quel momento, oppure costituita da più operatori che agiscono sugli operandi o anche l’invocazione di un metodo.
lvalue è la memoria che è associata a una variabile nella quale viene posto il valore di ritorno di un’espressione.
rvalue è un’espressione che produce un valore, che può essere assegnato a un lvalue.
In questo caso, se noi invertiamo l’ordine dell’assegnamento, la variabile myVar può essere anche un rvalue in quanto è un’espressione che ritorna il proprio valore e quindi può stare alla destra del simbolo di uguale. Tuttavia, il literal 250 non può essere evidentemente un lvalue in quanto non rappresenta un’area di memoria nella quale possiamo andare a scrivere qualcosa, cioè non è una zona di memoria puntata da una variabile. Se ne deduce che l’assegnamento non è valido.
GLI OPERATORI ARITMETICI
I primi cinque operatori sono binari, cioè agiscono su due operandi mentre gli ultimi due sono unari, aumentano o decrementano di una unità l’operando a cui vengono applicati. Gli operatori somma e sottrazione li conosciamo bene hanno un’associatività da sinistra a destra. È ovviamente possibile usare le variabili al posto dei literal numerici.
L’operatore di moltiplicazione segue le stesse regole della somma e sottrazione. Però ha precedenza maggiore ed ha la stessa associatività da sinistra a destra.
Passando alla divisione, se c’è una parte decimale e noi usiamo una variabile di tipo intero la parte frazionaria verrà scartata. Usare float e double per mantenere la parte decimale.
L’operatore modulo ritorna il resto di una divisione.
OPERATORI DI INCREMENTO E DECREMENTO
Se applichiamo l’operatore unario di incremento ++ ponendolo prima della variabile stiamo usando la notazione prefissa dell’operatore che si chiama preincremento. In questo caso succede che prima la variabile y viene incrementata e poi solo dopo sommata a x.
Se poniamo l’operatore ++ dopo l’operando le cose cambiano, prima viene eseguita la somma di x e di y poi solo dopo y viene incrementata di una unità.
Stessa cosa succede per l’operatore unario di decremento —.
L’ultima figura rappresenta un postdecremento.
ESECUZIONE DEL CODICE DI ESEMPIO
- Scaricare il codice da GITHUB, lanciare il file JAR con il seguente comando in Visual Studio Code, posizionandosi nella directory contenente il JAR.
java -jar –enable-preview CorsoJava.jar
- Oppure mettere in esecuzione il main che si trova nel file CorsoJava.java.
Scrivi un commento