Corso Java #3: definizione e tipologia di variabili

DiMarco Nisticò

PUBBLICATO IL 12 Apr 2019 ALLE 15:00 - AGGIORNATO IL 19 Agosto 2019 ALLE 10:54

Ora che sappiamo scrivere il nostro primo programma in Java, è il momento di parlare di uno degli elementi più importanti, ovvero le variabili.

In Java, una variabile possiamo considerarla come una sorta di contenitore, dentro il quale è presente un valore di riferimento. La variabile va ad occupare un segmento della memoria RAM nel momento in cui viene creata. Non appena le assegniamo uno specifico valore, tale settore di memoria viene occupato da quest’ultimo. Immagine la memoria come fosse una grandissima libreria, in cui sono presenti milioni di scaffali. Alcuni di essi posso essere vuoti mentre altri sono occupati da libri di grandezza variabile. Ogni spazio vuoto nella libreria è il settore della memoria mentre i libri sono le variabili, che possono assumere differenti tipologie di valore.

Tipologie di variabile

Come già detto poco fa, le variabili possono essere di vario tipo, definito attraverso il cosiddetto tipo identificatore. Vi elenchiamo quelli più utilizzati:

  • int: caratterizza una variabile di tipo intero
  • char: caratterizza una variabile costituita da un singolo carattere
  • double/float: riguardano variabili numeriche in virgola mobile
  • const: definisce una variabile costante (es. pi greco)
  • long: variabile simile al double ma con molte più cifre dopo la virgola

Questi sono definiti tipi primitivi e permettono di definire variabili numeriche o singoli caratteri. Vediamo sintatticamente come si definiscono:

int numero;
char carattere;

La sintassi è veramente semplice. Si scrive prima il tipo di variabile, poi il nome (identificatore) che vogliamo assegnargli, che per convenzione si indica tutto in minuscolo. Proviamo ora ad inizializzare una variabile. Dunque assegniamo a priori un valore ad una specifica variaible:

public class StampaVariabili {
	  
public static void main (String [] args) {
		 int numero=2;
		 char carattere='c';
	System.out.println(numero);
	System.out.println(carattere);

}
}

Ogni qualvolta andiamo a creare un nuovo progetto su Eclipse, sarà necessario creare una nuova Classe, il cui nome solitamente si scrive con la lettera maiuscola. In questo caso abbiamo la classe StampaVariabili. All’interno di questa classe abbiamo scritto il metodo main (dove risiede il codice che andrà eseguito), in cui sono state inizializzate due variabili, una intera con valore 2 e un carattere con valore c. E’ importante ricordare che i valori di caratteri e stringhe vanno scritti tra i singoli pedici, mentre i valori di int e double devono essere scritti senza, altrimenti se si scrive int numero=’2′ ciò che verrà stampato sarà il settore di memoria dedicato a quel valore e non il valore in sè.

Provate ad eseguire il codice descritto sopra e vedrete che l’output sarà semplicemente 2 c. Ora vediamo un semplice esercizio in cui stampiamo la somma di due numeri interi. Ciò di cui abbiamo bisogno sono tre variabili, due per identificare gli addendi e una che memorizza la somma. Procediamo:

public class StampaVariabili {
	static int numero=2;
	 static int numero2=4;
	static int somma=numero+numero2;

public static void main (String [] args) {
	System.out.println("La somma di "+numero+" e "+numero2+" e': ");
	System.out.println(somma);

}
}

In questo caso l’output sarà “La somma di 2 e 4 è: 6”. E’ possibile anche inizializzare le variabili direttamente all’interno del main:

public class StampaVariabili {
	

public static void main (String [] args) {
	 int numero=2;
	  int numero2=4;
	 int somma=numero+numero2;
	System.out.println("La somma di "+numero+" e "+numero2+" e': ");
	System.out.println(somma);

}
}

In questo caso però viene omesso il termine static, che identifica una variabile di classe esterna ad ogni metodo e funzione che vengono definiti nella classe (parleremo poi successivamente nel dettaglio del significato di metodo). Ricapitolando: se definiamo una variabile all’esterno del main (o di qualunque altro metodo) bisogna aggiungere la keyword static mentre se invece viene definita (e/o inizializzata) all’interno di un metodo (in questo caso il main) allora si deve omettere. Nel secondo caso si parla di variabile locale.

La variabile static mantiene lo stesso valore fin quando il programma non termina. Proprio per questo ad una variabile statica viene allocato un solo settore della memoria. Mentre una variabile locale viene allocata solamente per il tempo in cui viene eseguito il codice ad essa associata, per poi essere eliminata dalla memoria.

Vediamo un altra variante di questo piccolo programma:

public class StampaVariabili {
	
	public static int a=2;
	public static int b=4;
	
	private static int Somma(int a2, int b2) {
		int somma=a+b;
		return somma;
	}

public static void main (String [] args) {
	System.out.println("La somma di "+a+" e "+b+" e': ");
	int s=Somma(a, b);
	System.out.println(s);
}}

In questo caso abbiamo definito gli addendi fuori dal main, utilizzando la parola static con la proprietà public, di cui parleremo tra poco, mentre la somma è stata definita in un apposita funzione dedicata solamente a questa operazione. A questo punto abbiamo richiamato la funzione all’interno del main per stampare il risultato.

Le istruzioni nelle quali vengono utilizzate le variabili sono dette scope. Una variabile locale ha come scope il blocco d’istruzioni che inizia dal momento della dichiarazione della variabile fino alla fine del codice che la implementa. Per una variabile d’istanza, ovvero quella dichiarata all’esterno di ogni metodo, lo scope è l’intera classe, metodi e funzioni comprese, che possono richiamare tale variabile sempre.

Visibilità di una variabile: public private e protected

Queste tre proprietà identificano la visibilità di una variabile e un suo possibile utilizzo all’esterno della loro classe di definizione. Prendiamo il seguente esempio:

public class Moltiplicazione {
	
	private static float pigreco=3.14;
	
public static void main (String [] args) {
	System.out.println(pigreco);
}}

In questo caso la variabile pigreco è di tipo static, ovvero può essere implementata solamente nella stessa classe in cui è stata dichiarata, in questo caso la classe Moltiplicazione. Se andassimo a creare una seconda classe che fa riferimento alla variabile “pigreco”, Eclipse ci restituirebbe un errore poiché la variabile non può essere presa in considerazione all’esterno della classe di appartenenza. Per poterla utilizzare al di fuori della classe bisogna utilizzare la proprietà public.

La terza proprietà è protected, che indica che una variabile può essere accessibile solamente dalle classi create nel medesimo package. In Eclipse è possibile creare diversi package per uno stesso progetto, che possono essere utili a suddividere varie sezioni del programma che stiamo programmando.

Nella prossima lezione andremo a parlare di operatori e casting.

Di Marco Nisticò

Sviluppatore informatico, cerco sempre di stare al passo con i tempi in un mondo ormai circondato dalla tecnologia.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.