Variabili Java

18
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

description

differenza tra le variabili primitive e quelle di riferimento in java

Transcript of Variabili Java

Page 1: Variabili Java

Le Variabili in Java5° parte del modulo

Programmazione ad OggettiLezione sulle variabili del 17 novembre 2008

Per la classe IVA liceo tecnico – Prof. Silvano Natalizi

Page 2: Variabili Java

La terminologia delle variabili in Java In relazione al loro contenuto

Primitive di Riferimento (reference)

In relazione a dove le dichiariamo di istanza (la memoria dello stato dell’oggetto) locali (dichiarate dentro un metodo)

In relazione al loro essere di input o di output argomenti (input) valori restituiti (return types) (output)

In relazione alla loro complessità variabili semplici strutture dati (array…)

Page 3: Variabili Java

Ogni variabile è di un tipo Ogni dato è di un

preciso tipo Ad esempio:

Un numero intero è di tipo int

Un numero reale è di tipo double

Un cane pastore è un cane

Ogni variabile appartiene ad un tipo preciso di dato

Non si può memorizzare un dato in una variabile che non è del suo tipo

Page 4: Variabili Java

Java si preoccupa del tipo della variabile Java fa tutto un lavoro per la nostra sicurezza 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 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)

Inoltre il compilatore non permette altre cose del tipo Coniglio coniglio = new Giraffa()

Come potrei creare un coniglio con il metodo costruttore di una Giraffa ?

Page 5: Variabili Java

Dichiarazione di una variabile Per permettere a Java di fare tutto il lavoro di controllo sulle

variabili, dobbiamo dichiarare il tipo di variabile E’ un intero? E’ un singolo carattere? E’ una Giraffa?

1. Le variabili devono avere un nome2. Le variabili devono avere un tipo

La variabili possono essere degli oggetti Quando si dice un oggetto di tipo X,

il Tipo dell’oggetto e la Classe dell’oggetto sono esattamente la medesima cosa

Tipo dell’oggetto e Classe sono termini sinonimi

Page 6: Variabili Java

Variabili come contenitori Quando pensate alle variabili concretizzatele

quelle piccole con delle tazze (per il caffè, il latte, il tè…),

quelle grandi con dei bicchieri di birra giganti o con i contenitori di popcorn che i ruminanti si portano dietro nelle sale dei cinema

Una variabile è come una tazza, è come un contenitore, contiene qualcosa

Una variabile ha una dimensione ed un tipo Una variabile può contenere valori “primitivi”

oppure riferimenti agli oggetti

Page 7: Variabili Java

La grandezza di una variabile Se facciamo

l’analogia tra la grandezza di una variabile con quella dei coni di un gelato

Abbiamo coni piccoli, mediani, grandi…

Lo stesso vale per le variabili

Page 8: Variabili Java

La grandezza delle variabili primitive Le variabili primitive

sono quelle che contengono il valore della variabile (numeri, caratteri, vero/falso)

Le variabili primitive hanno diverse dimensioni

I quattro contenitori mostrati sono per i numeri interi, aventi diverse grandezza

Ogni contenitore ha un numero fisso di bit

Page 9: Variabili Java

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

Page 10: Variabili Java

Dichiarazione ed assegnazione di valori alle variabili primitiveDichiarazione 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;

Si può assegnare il valore ad una variabile in più modi.

Scrivendo un valore dopo il segno dell’uguale

Assegnare il valore di una variabile ad un’altra

Utilizzare un’espressione algebrica dopo l’uguale x=y+56

Page 11: Variabili Java

Il valore deve entrare nella variabile Non si può mettere un valore

grande in una tazza piccola Si può anche, ma a costo di

versare la parte che non c’entra Il compilatore cerca di evitare

questo se riesca a comprendere dal codice che qualcosa non può essere contenuto nella variabile

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 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!

Page 12: Variabili Java

Il nome delle variabili Quali nomi possiamo usare per chiamare le

variabili? Il nome deve iniziare con una lettera, un

segno underscore _, o un segno di dollaro $ Non può iniziare con un numero Dopo il primo carattere si possono usare

anche numeri Il nome deve essere un nome comune

qualsiasi ad eccezione di parole riservate al linguaggio

Page 13: Variabili Java

Variabile di tipo oggetto (reference) Non esiste in realtà nessuna cosa che è una variabile

oggetto C’è solo una variabile riferimento all’oggetto Un riferimento contiene i bit che rappresentano un

modo per accedere all’oggetto 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

Sappiamo solo che rappresenta uno ed un sol oggetto

Solo java sa come usarlo per trovare la strada per raggiungere l’oggetto

Page 14: Variabili Java

Variabile di riferimento e variabile primitiva Non si può mettere un oggetto dentro una

variabile Non esiste nessuna tazza gigante che si possa

espandere per contenere la dimensione di qualsiasi oggetto

Gli oggetti vivono in un solo posto 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

Page 15: Variabili Java

Una variabile di riferimento come un telecomando Usiamo l’operatore “.” su

di una variabile di riferimento per inviare il messaggio: Usa la cosa prima del

punto per fare la cosa dopo il punto

Ad esempio: mydog.bark(); significa: usa l’oggetto

puntato dalla variabile myDog per invocare l’esecuzione del suo metodo bark().

Quando usi l’operatore “.” su di un riferimento, pensa al premere un bottone di un telecomando

Page 16: Variabili Java

Cosa è memorizzato in una variabile In una variabile è

memorizzato un valore In quelle primitive il

valore del numero o di un carattere o di ciò che la variabile significa

Pure nei riferimenti d’oggetto c’è un valore, qualcosa c’è nella tazza, ma questa volta il suo valore è un telecomando

Page 17: Variabili Java

Le tre fasi, dichiarazione, creazione, assegnamento di un oggetto

Page 18: Variabili Java

Fine della puntata