Definizione di variabile
La definizione di una variabile è composta da un nome o identificativo (preceduta dal tipo) e da un valore (opzionale).

T var = value;

La variabile memorizza il "dato" che può essere modificato durante l'esecuzione del programma,
da qui, l'appellativo di "variabile", altrimenti sarebbe una "costante".

La variabile nasce, vive, muore e può essere visibile (scope) all'interno di un programma.
il compito del bravo programmatore è:

  • dichiarare la variabile
  • assegnare un nome univoco con relativo tipo di dati

in questo modo verrà riservato il giusto spazio di memoria dove verrà scritto il valore della
variabile.

Esempio:
T var;
dove T è il tipo, esempio: int, double e altro.
Il "tipo" si divide in tipi di base oppure oggetti, in questo ultimo caso T diventa un nome di classe.

Di seguito alcuni esempi di dichiarazione di variabile:
int x ; double y ;

Si può anche assegnare un valore alla variabile:
int x = 5 ; double y = 60 ;
Il tipo dei valori della variabile serve per stabilire quanta memoria riservare alla stessa, nel caso del tipo int sono 4 byte.

Rappresentazione grafica delle seguenti variabili:

int y = 2 ; [risultato: 2]
int z ; [risultato: z - indefinito]

dove - indica che z è stato dichiarato ma non inizializzato cioè non gli è stato assegnato un valore.

Comando di assegnazione
Un comando di assegnazione è un'istruzione che ha lo scopo di modificare il valore di una variabile, anche se il valore di una variabile non era stato solo dichiarato, per cui aveva un valore indefinito (vedi esempio z di cui sopra).

var = expr;
var è il nome della variabile e expr è una espressione il cui “tipo” è compatibile con il “tipo” di var.
Il comando sostituisce il valore della variabile che compare a sinistra (left-value) del simbolo di uguaglianza con il valore di destra.

Esempio di espressione
x = 12;

Assegna alla variabile x il valore 12;
y = (x+1)/2;
assegna a y il valore di x incrementato di 1 il tutto diviso per 12

Tipi di dato
Un tipo di dato è costituito da un'insieme di valori (p.e. tutti i numeri interi) e da un' insieme di operazioni applicabile a tale valori (p.e. somma, sottrazione, moltiplicazione e così via)

Come già accennato prima, i tipi di dato in Java appartengono a 2 categorie principali:

  • Tipi primitivi: boolean, byte, short, int, long, float, double, char
  • Tipi non primitivi (classi o interfacce): String per esempio.

Elenco di Tipi associati ai valori, con le operazioni aritmetiche e matematiche possibili.

  • boolean : false e true
  • byte : interi da -128 a 127] ( decimale, ottale , esadecimale) operazioni: + , - , *, / , %.
  • short : interi da -32,768 a 32,767 ( decimale, ottale , esadecimale operazioni: + , - , * , / , %.
  • int numeri interi da -2,147,483,648 a 2,147,483,647 ( decimale, ottale , esadecimale) operazioni: + , - , * , / , %.
  • long numeri interi da -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807 ( decimale, ottale, esadecimale) operazioni: + , - , * , / , %.
  • float numeri reali in formato IEEE754 a 32 bit notazione a virgola fissa e mobile: +, -, *, /.
  • double numeri reali in formato IEEE754 a 64 bit bit notazione a virgola fissa e mobile:+, -, *, /.
  • char caratteri Unicode, notazione simboli tra apici, nessuna operazione.
  • String : Sequenza di caratteri Unicode, notazione simboli tra doppi apici " operazione + (concatenazione)

Le 4 operazioni aritmetiche sono rappresentate dai simboli + , - , * , /.
Per i tipi di dato byte, short, int, long il simbolo / rappresenta il quoto dell'operazione
Per inserire un apice ' o un doppio apice " dentro una stringa si scrive \' e \" rispettivamente
In aggiunta, per completezza i simboli:
&& and logico o congiunzione
|| or logico o disgiunzione
! not o negazione
Nel caso di una assegnazione come da esempio:
T var = expr

expr deve avere tipo compatibile con T , (nonnecessariamente lo stesso)
per cui, promozione e casting per tipi definisce i casi in cui il tipo di var e expr non coincidono, ma può comunque essere corretto e applicabile.

Promozione per tipi
Qualora tanto il tipo della variabile quanto il tipo dell'espressione rappresentino dati numerici e il tipo di expr è sottoinsieme del tipo di var prima dell'assegnazione avviene una conversione automatica detta promozione.
Per esempio:

byte j ; 
i = j ;

int è un insieme “più ampio” di byte, quindi effettuando il cast da j (byte) a i (int) non si “perde informazione” non è vero il contrario ovviamente.
Il termine “promozione” non è scelto a caso, la variabile di tipo byte che può assumere valori da -128 a 127 in decimale viene promossa a intera (int) che può assumere valori nell'intervallo da -2,147,483,648 a 2,147,483,647.

Diamo ora invece una definizione di casting:

Casting
Se il tipo della variabile (var) e tipo dell’espressione a destra del segno di = (expr) prevedono valori comuni (il tipo di expr è sottoinsieme del tipo di var) si può imporre la conversione esplicita detta casting (cioè il tipo di expr diventa il tipo di var). Questo se i valori numerici sono corretti e compatibili (cioè se il valore dell’intero i sta nel range del tipo byte).
Per esempio:

byte j; 
j = (byte) i;

è corretto solo se i è minore o uguale del valore massimo disponibile per byte, per esempio i ha valore 10.