Le variabili in Java hanno tutte un tipo e vengono classificate in base a:


AMBITO (SCOPE)

Questa classificazione dipende da dove e per quanto tempo la variabile è accessibile.


Variabili locali

  • Dichiarate all’interno di un metodo, costruttore o blocco.
  • Devono essere inizializzate prima dell’uso.
  • Non hanno valori predefiniti.
  • Esistono solo durante l’esecuzione del metodo o del blocco.
class Numero {
	public void metodo() {
	    int numero = 11;  // Variabile locale
	    System.out.println(numero);
	}
}

Variabili d’istanza (non static)

  • Dichiarate all’interno di una classe, ma fuori dai metodi.
  • Ogni istanza (oggetto) della classe ha la propria copia del campo.
  • Si accede a un campo di istanza solo tramite un oggetto (oggetto.campo).
  • Ogni oggetto può avere un valore diverso per lo stesso campo.
class Persona {
    String nome; // Variabile d'istanza (default null)
    int eta;     // Variabile d'istanza (default 0)
}

Variabili di classe (static)

  • Appartengono alla classe e non a una singola istanza.
  • Esiste una sola copia del campo statico, condivisa da tutte le istanze della classe.
  • Si accede a un campo statico tramite il nome della classe (Classe.campoStatico) o direttamente all’interno della classe.
  • Tutti gli oggetti hanno lo stesso valore per quel campo.
class Contatore {
    static int conteggio = 0; // Variabile di classe
}

TIPO DI DATO

Questa classificazione dipende dal tipo di valore che la variabile può contenere (variabili primitive e di riferimento).


MODIFICATORE D’ACCESSO

Questa classificazione dipende dalla visibilità della variabile.

class Prova {
    private int privata;      // Solo nella classe
    int defaultVar;           // Solo nello stesso package
    protected int protetta;   // Package + sottoclassi
    public int pubblica;      // Ovunque
}

MODIFICATORE SPECIALE

Questa classificazione dipende da modificatori speciali.