Console 3: variabili di tipo int


   Una variabile int è un numero intero (con segno) che varia tra -??? e ???
Per dichiarare una variabile x come int si può scrivere:

int x;

A questo punto viene riservato uno spazio nella memoria del computer alla variabile x. Ma questo spazio non contiene niente! Cioè la variabile x non ha alcun valore (beh, non è del tutto vero, ma quasi...). Per assegnare il valore 2 alla variabile x, si può scrivere:

int x;
x = 2;

O ancora, più semplicemente:

int x=2;

A questo punto il contenitore (= spazio di memoria) contiene il valore (=2) della variabile x.


Non confondere la variabile e il valore della variabile!
Una variabile è un contenitore (uno spazio riservato in memoria)
Il valore è il contenuto del contenitore (quello che c'è dentro al contenitore)


Supponendo che il contenitore sia una bottiglia, potremmo dire che la variabile è la bottiglia, mentre il suo valore è quello che contiene, che può essere acqua, coca-cola, vino...

In particolare, il valore di una variabile può cambiare, ma la variabile (=lo spazio in memoria), no.

Osservare che una dichiarazione del tipo:

x = 2;

dà un errore in fase di compilazione. Java è un linguaggio fortemente tipizzato: quando si dichiara una variabile, bisogna dire di che tipo è (qui il tipo è int).

In Java un int NON è un oggetto, ma un tipo primitivo (questo è sorprendente perchè, come vedremo, quasi tutto in Java è fatto da oggetti). Comunque, al momento, questo non c'interessa più di tanto.

Con gli int si possono fare le quattro operazioni:

int x=2,y=4,z; //dichiara le variabili int x,y,z ed assegna il valore 2 a x e il valore 4 a y

z = x+y; // z vale 6

z = x*y; // z vale 8

z = x-y; // z vale -2

z = y/x ; // z vale 2

Fin qui tutto bene, adesso:

z = x/y; // z vale 0

Sì perchè 2/4 = 0,5 che non è un intero, allora Java trasforma il risultato in un intero tralasciando quello che c'è dopo la virgola. Per esempio 5/2 = 2,5 diventa 2. Bisogna fare attenzione!

Un'altra cosa alla quale bisogna fare attenzione è che l'operatore = NON ha lo stesso significato che in matematica, non è un'uguaglianza, ma un'assegnazione. L'espressione:

A = B;

Non significa che la variabile A sia uguale alla variabile B, ma significa che alla variabile A viene assegnato il valore della variabile B (sempre in quest'ordine: quello di sinistra prende il valore di quello a destra). Questo è un fatto comune a praticamente tutti i linguaggi di programmazione. Tanto per fare un esempio:

int x = 2; // dichiara una variabile int x con valore 2

x = x+1; // x vale 3

Dal punto di vista della matematica, l'espressione x = x+1, conduce a: 0 = 1, che è assurdo!



ESERCIZIO:

int x=3,y=8,z;

z = (y-x)*x;

x = z/y;

x = x+2;

z = 3*x;

Quanto vale z?

ESERCIZIO: Scrivere un programma mettendo nel metodo main (riguardare il codice di HelloWorld.java) il codice dell'esercizio precedente e aggiungendo:

System.out.println("Adesso z vale: "+z);

compilare, eseguire e vedere cosa succedde...