Variabili in Java

Una variabile è un nome associato ad un valore che può essere cambiato. Una variabile è formata sostanzialmente da due parti:

  • l’identificatore, che è semplicemente il nome della variabile
  • e il valore che rappresenta un indirizzo di memoria che poi conterrà il contenuto vero e proprio della variabile.
Variabili in Java Variables in Java

Per esempio, se scrivo int age = 20; associerò alla variabile con identificatore age il valore 20, che verrà salvato in memoria.

Dichiarare le variabili

In Java per dichiarare una variabile, si utilizza la seguente sintassi:

tipoVariabile nomeVariabile = valore

Durante la dichiarazione di una variabile, è possibile non inserire subito un valore per poi assegnarlo in seguito. Al contrario, durante il processo di inizializzazione di una variabile, assegno subito il valore. Ecco alcuni esempi:

// Dichiarazione di una variabile
int a;

// Assegnazione di un valore ad una variabile precedentemente dichiarata
a = 10;

// Inizializzazione di una variabile
int b = 20;

Java Linguaggio Tipato

Java è un linguaggio tipato, quindi a ogni variabile va assegnato un tipo (Intger, Double, String, ecc…) che definisce le caratteristiche dei valori che andrà ad assumere quella variabile. Per esempio, una variabile Intger potrà contenere solo numeri interi, come 38, e non numeri decimali, come 38.2. Per il momento perl non ci preoccupiamo troppo dei tipo, dato che li approfondiremo nella prossima sezione della guida.

Nomi delle variabili in Java

L’identificatore (o nome) di una variabile è una sequenza di lettere e cifre con l’ammissione dei caratteri underscore (_) e dollaro ($) il cui primo elemento deve essere una lettera o uno dei due simboli prima citati ma non un numero.

Secondo le convenzioni, i nomi delle variabili devono iniziare con una lettera minuscola e, se formati da più parole concatenate, tutte le parole successive alla prima abbiamo la prima lettera maiuscola (notazione a cammello – camel case) e non vengano utilizzati i caratteri _ e $, nonostante siano ammessi. Esempio:

int variabileDiProva;

Nonostante il nome possa essere una qualsiasi stringa, bisogna assicurarsi che non sia una delle parole riservate dal linguaggio Java che non possono essere utilizzate a questo scopo:

abstractcontinuefornewswitch
assertdefaultgotopackagesynchronized
booleandoifprivatethis
breakdoubleimplementsprotectedthrow
byteelseimportpublicthrows
caseenuminstanceofreturntransient
catchextendsintshorttry
charfinalinterfacestaticvoid
classfinallylongstrictfpvolatile
constfloatnativesuperwhile

Tipi delle variabili in Java

In Java ci sono tre tipi di variabili: le variabili locali, le variabili statiche (o di classe) e le variabili di istanza.

Scope di una variabile in Java

Prima di analizzare i vari tipi di variabili, dobbiamo capire il significato dello scope di una variabile, dato che troveremo questo termine numerose volte.

Lo scope di una variabile è l’aria del codice nel quale un identificatore resta associato a un indirizzo di memoria. Più semplicemente è l’area del codice nella quale una variabile mantiene il suo valore e può essere utilizzata.

In Java ogni blocco di codice racchiuso tra parentesi graffe rappresenta uno scope.

Variabili Locali

Le variabili locali sono dichiarate all’interno di un metodo di una classe. Vengono create quando un metodo viene creato e vengono cancellate dalla memoria quando il metodo termina.

Il loro scope si limita al metodo in cui sono state create, quindi possono essere utilizzate solo all’interno di esso e non all’esterno. Inoltre non possono essere utilizzate prima di essere inizializzate.

for (int i = 0; i < 10; i++) {
  // Qui posso accedere alla variabile i
  System.out.println(i);
}

// Qui, fuori dal ciclo for, non posso più accedere alla variabile e questo print darà errore
System.out.println(i);

Variabili di Istanza

Le variabili di istanza sono dichiarate all’interno di una classe ma all’esterno di ogni metodo. Queste variabili hanno come scope l’intera classe in cui sono dichiarate, copresi i metodi della classe. Sono quindi accessibili anche all’interno dei metodi.

Nel caso una variabile locale abbia lo stesso nome di una variabile di istanza, la variabile più specifica ha la precedenza, quindi in questo caso la variabile locale

public class Esempio {
  String prova = "Stringa di prova";
}

Variabili Statiche (o di Classe)

Le variabili statiche, conosciute anche come variabili di classe, sono così chiamate perché associate ad una specifica classe e visibili da tutte le istanze di quell’oggetto. Il loro valore è comune a tutte le istanze e un cambiamento effettuato da un’istanza si rifletterà trasversalmente a tutte le altre.

Scendendo in dettaglio, per queste variabili viene allocata una porzione di memoria legata alla classe e non associata ad ogni singola istanza come avviene per le variabili locali. Inoltre queste variabili rimangono in memoria fino al termine dell’esecuzione del programma.

public class Esempio {
  public static String variabileStatica = "Testo di prova";

  public static void main(String args[]) {
    Esempio es1 = new Esempio();
    Esempio es2 = new Esempio();

    System.out.println(es1.variabileStatica);
    System.out.println(es2.variabileStatica);

    es2.variabileStatica = "Cambio il testo della var";

    System.out.println(es1.variabileStatica);
    System.out.println(es2.variabileStatica);
  }
}