sintassi
dichiarazione con assegnazione
- standard: tipo_valore nomeVariabile = valore
- completa: modificatore_accesso static final tipo_valore nomeVariabile = valore
regole il nome della variabile:
- primo elemento deve essere una lettera oppure il carattere underscore _ o il carattere dollaro $
- inizino con una lettera minuscola (per non confonderle con la classe)
- non si usa underscore _ per i nomi multipli ma il sistema a struttura cammello
- non si possono usare le parole utilizzate nei comandi Java
tipi di variabili (Scope):
- variabili locali
la dichiarazione avviene all'interno di un metodo, e scompaiono (vengono cancellate dalla memoria) quando il metodo termina
le variabili locali non possono essere utilizzate prima della loro inizializzazione, cioé assegnazione del valore iniziale
altrimenti il compilatore da errore
- variabili globali di istanza
dichiarate all'interno di una classe ma all'esterno di ogni metodo, visibili all'interno di tutti i metodi della classe per ciascuna istanza
se non inizializzata con un valore non da errore ma avrà valore null
vanno dichiarate static
se si vuole impedire che il valore della variabile venga modificato in un metodo si deve dichiarare final
puoi sempre creare nelk metodo una variabilke locale con stesso nome e valore differente
conflitto:
in caso che il nome della variabie locale o del parametro di un metodo abbia lo stesso nome di una variabile globale d'istanza, ha la precedenza la variabile locale o il parametro
esempio: variabile globale non inizializzata
static String testo; variabile dichiarata ma non inizializzata
public static void main(String[] args)
{
System.out.println(testo);
}
null
esempio: variabile globale inizializzata e modificata in locale
static String testo = "Ciao Mondo";
public static void main(String[] args)
{
System.out.println(testo);
sub();
}
public static void sub()
{
testo = "Ciao Mondo modificato";
System.out.println(testo);
String testo = "Ciao Mondo sub"; variabile locale con stesso nome che va inizializzata prima dell'uso altrimenti il compilatore da errore
System.out.println(testo);
}
Ciao Mondo
Ciao Mondo modificato
Ciao Mondo sub
esempio: variabile globale inizializzata final che da errore se si modifica
final static String testo = "Ciao Mondo";
public static void main(String[] args)
{
testo = "Ciao Mondo modificato"; da ERRORE
String testo = "Ciao Mondo modificato"; non da errore
System.out.println(testo);
}