Variabili Java

4,800
-1

Published on

differenza tra le variabili primitive e quelle di riferimento in java

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
4,800
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
30
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Variabili Java

  1. 1. Le Variabili in Java 5° parte del modulo Programmazione ad Oggetti Lezione sulle variabili del 17 novembre 2008 Per la classe IVA liceo tecnico – Prof. Silvano Natalizi
  2. 2. La terminologia delle variabili in Java <ul><li>In relazione al loro contenuto </li></ul><ul><ul><li>Primitive </li></ul></ul><ul><ul><li>di Riferimento (reference) </li></ul></ul><ul><li>In relazione a dove le dichiariamo </li></ul><ul><ul><li>di istanza (la memoria dello stato dell’oggetto) </li></ul></ul><ul><ul><li>locali (dichiarate dentro un metodo) </li></ul></ul><ul><li>In relazione al loro essere di input o di output </li></ul><ul><ul><li>argomenti (input) </li></ul></ul><ul><ul><li>valori restituiti (return types) (output) </li></ul></ul><ul><li>In relazione alla loro complessità </li></ul><ul><ul><li>variabili semplici </li></ul></ul><ul><ul><li>strutture dati (array…) </li></ul></ul>
  3. 3. Ogni variabile è di un tipo <ul><li>Ogni dato è di un preciso tipo </li></ul><ul><li>Ad esempio: </li></ul><ul><ul><li>Un numero intero è di tipo int </li></ul></ul><ul><ul><li>Un numero reale è di tipo double </li></ul></ul><ul><ul><li>Un cane pastore è un cane </li></ul></ul><ul><li>Ogni variabile appartiene ad un tipo preciso di dato </li></ul><ul><li>Non si può memorizzare un dato in una variabile che non è del suo tipo </li></ul>
  4. 4. Java si preoccupa del tipo della variabile <ul><li>Java fa tutto un lavoro per la nostra sicurezza </li></ul><ul><li>Non permette che si facciano cose bizzarre o pericolose come quella di inserire un dato di un tipo in una variabile di un altro tipo </li></ul><ul><ul><li>ad esempio un numero decimale in una variabile di tipo intero, a meno che concordiate con il compilatore di accettare la perdita di precisione insita in quella assegnazione di valore ( si perde la parte decimale del numero) </li></ul></ul><ul><li>Inoltre il compilatore non permette altre cose del tipo </li></ul><ul><ul><li>Coniglio coniglio = new Giraffa() </li></ul></ul><ul><li>Come potrei creare un coniglio con il metodo costruttore di una Giraffa ? </li></ul>
  5. 5. Dichiarazione di una variabile <ul><li>Per permettere a Java di fare tutto il lavoro di controllo sulle variabili, dobbiamo dichiarare il tipo di variabile </li></ul><ul><li>E’ un intero? E’ un singolo carattere? E’ una Giraffa? </li></ul><ul><li>Le variabili devono avere un nome </li></ul><ul><li>Le variabili devono avere un tipo </li></ul><ul><li>La variabili possono essere degli oggetti </li></ul><ul><ul><li>Quando si dice un oggetto di tipo X, </li></ul></ul><ul><ul><ul><li>il Tipo dell’oggetto e la Classe dell’oggetto sono esattamente la medesima cosa </li></ul></ul></ul><ul><ul><ul><li>Tipo dell’oggetto e Classe sono termini sinonimi </li></ul></ul></ul>
  6. 6. Variabili come contenitori <ul><li>Quando pensate alle variabili concretizzatele </li></ul><ul><ul><li>quelle piccole con delle tazze (per il caffè, il latte, il tè…), </li></ul></ul><ul><ul><li>quelle grandi con dei bicchieri di birra giganti o con i contenitori di popcorn che i ruminanti si portano dietro nelle sale dei cinema </li></ul></ul><ul><li>Una variabile è come una tazza, è come un contenitore, contiene qualcosa </li></ul><ul><li>Una variabile ha una dimensione ed un tipo </li></ul><ul><li>Una variabile può contenere valori “primitivi” oppure riferimenti agli oggetti </li></ul>
  7. 7. La grandezza di una variabile <ul><li>Se facciamo l’analogia tra la grandezza di una variabile con quella dei coni di un gelato </li></ul><ul><li>Abbiamo coni piccoli, mediani, grandi… </li></ul><ul><li>Lo stesso vale per le variabili </li></ul>
  8. 8. La grandezza delle variabili primitive <ul><li>Le variabili primitive sono quelle che contengono il valore della variabile (numeri, caratteri, vero/falso) </li></ul><ul><li>Le variabili primitive hanno diverse dimensioni </li></ul><ul><li>I quattro contenitori mostrati sono per i numeri interi, aventi diverse grandezza </li></ul><ul><li>Ogni contenitore ha un numero fisso di bit </li></ul>
  9. 9. I diversi tipi di variabili primitive Tipo Bit Intervallo di valori boolean … true/false char 16 (0, 65536) caratteri alfanumerici byte 8 (-128 , 127) short 16 (-32768 ,32767) Int 32 (-2147483648, 2147483647) long 64 (-molto grande, + molto grande) float 32 Numeri decimali double 64 Numeri decimali più grandi
  10. 10. Dichiarazione ed assegnazione di valori alle variabili primitive <ul><li>Si può assegnare il valore ad una variabile in più modi. </li></ul><ul><li>Scrivendo un valore dopo il segno dell’uguale </li></ul><ul><li>Assegnare il valore di una variabile ad un’altra </li></ul><ul><li>Utilizzare un’espressione algebrica dopo l’uguale x=y+56 </li></ul>Dichiarazione Assegnazione int x; x=560; byte b; b=89; boolean isFun; isFun=true; double d; d=4567.89; char c; c=‘d’; boolean powerOn; powerOn=isFun; int y; y=300; int z; z=y;
  11. 11. Il valore deve entrare nella variabile <ul><li>Non si può mettere un valore grande in una tazza piccola </li></ul><ul><li>Si può anche, ma a costo di versare la parte che non c’entra </li></ul><ul><li>Il compilatore cerca di evitare questo se riesca a comprendere dal codice che qualcosa non può essere contenuto nella variabile </li></ul><ul><li>Ad esempio non si può mettere un valore di tipo int in una variabile di tipo byte: int x=24; byte b=x; non è accettato dal compilatore ! Ma come ? Noi sappiamo che 24 entra in una tazza di tipo byte! Il fatto è che </li></ul><ul><ul><li>il compilatore si preoccupa se noi cerchiamo di mettere una grande cosa dentro una piccola, e c’è la possibilità di un traboccamento! Non aspettiamoci che il compilatore sappia quale è il valore di x, anche se è scritto letteralmente nel codice! </li></ul></ul>
  12. 12. Il nome delle variabili <ul><li>Quali nomi possiamo usare per chiamare le variabili? </li></ul><ul><li>Il nome deve iniziare con una lettera, un segno underscore _, o un segno di dollaro $ </li></ul><ul><li>Non può iniziare con un numero </li></ul><ul><li>Dopo il primo carattere si possono usare anche numeri </li></ul><ul><li>Il nome deve essere un nome comune qualsiasi ad eccezione di parole riservate al linguaggio </li></ul>
  13. 13. Variabile di tipo oggetto (reference) <ul><li>Non esiste in realtà nessuna cosa che è una variabile oggetto </li></ul><ul><li>C’è solo una variabile riferimento all’oggetto </li></ul><ul><li>Un riferimento contiene i bit che rappresentano un modo per accedere all’oggetto </li></ul><ul><li>Questa variabile non contiene l’oggetto, ma contiene qualcosa simile ad un puntatore o ad un indirizzo dell’oggetto. Tuttavia, ad eccezione di java, nessuno sa cosa c’è dentro una variabile riferimento. Nessuno ha la possibilità di conoscerne il valore </li></ul><ul><li>Sappiamo solo che rappresenta uno ed un sol oggetto </li></ul><ul><li>Solo java sa come usarlo per trovare la strada per raggiungere l’oggetto </li></ul>
  14. 14. Variabile di riferimento e variabile primitiva <ul><li>Non si può mettere un oggetto dentro una variabile </li></ul><ul><li>Non esiste nessuna tazza gigante che si possa espandere per contenere la dimensione di qualsiasi oggetto </li></ul><ul><li>Gli oggetti vivono in un solo posto </li></ul><ul><li>Mentre una variabile primitiva è piena di bit che rappresentano il valore effettivo della variabile, una variabile di riferimento è piena di bit che rappresentano un modo per ritrovare l’oggetto </li></ul>
  15. 15. Una variabile di riferimento come un telecomando <ul><li>Usiamo l’operatore “.” su di una variabile di riferimento per inviare il messaggio: </li></ul><ul><ul><li>Usa la cosa prima del punto per fare la cosa dopo il punto </li></ul></ul><ul><li>Ad esempio: </li></ul><ul><ul><li>mydog.bark(); </li></ul></ul><ul><ul><li>significa: usa l’oggetto puntato dalla variabile myDog per invocare l’esecuzione del suo metodo bark(). </li></ul></ul><ul><li>Quando usi l’operatore “.” su di un riferimento, pensa al premere un bottone di un telecomando </li></ul>
  16. 16. Cosa è memorizzato in una variabile <ul><li>In una variabile è memorizzato un valore </li></ul><ul><li>In quelle primitive il valore del numero o di un carattere o di ciò che la variabile significa </li></ul><ul><li>Pure nei riferimenti d’oggetto c’è un valore, qualcosa c’è nella tazza, ma questa volta il suo valore è un telecomando </li></ul>
  17. 17. Le tre fasi, dichiarazione, creazione, assegnamento di un oggetto
  18. 18. Fine della puntata

×