1. Costanti
Molti altri linguaggi di programmazione hanno costanti , cioè variabili i cui valori non possono essere modificati . Di solito vengono utilizzati per qualche tipo di cosa fondamentale come il numero Pi
o il numero di giorni nei mesi dell'anno. Detto questo, in linea di principio, un programmatore può rendere qualsiasi variabile una costante, se decide che è necessario farlo.
Quindi, come si dichiara una variabile immutabile (costante) in Java? C'è una parola chiave speciale per questo: final
. La creazione di una variabile immutabile ha lo stesso aspetto della creazione di una variabile ordinaria. L'unica differenza è che prima del tipo di variabile è necessario scrivere la parola final
, in questo modo:
final Type name = value;
Se provi ad assegnare un valore diverso a una final
variabile, il tuo programma semplicemente non verrà compilato.
Una final
variabile deve essere inizializzata (le deve essere assegnato un valore) quando viene dichiarata. C'è un'eccezione a questa regola: puoi spostare l'inizializzazione di una variabile di classe statica in un costruttore. Ma lo scoprirai nel Livello 10 .
Per ridurre il numero di parole chiave, gli sviluppatori Java usano la parola final
per qualcosa di più della semplice dichiarazione di costanti. final
può anche essere applicato a metodi e persino a classi. I metodi dichiarati come final
non possono essere sovrascritti e una classe dichiarata come final
non può essere ereditata.
Il final
modificatore può essere aggiunto prima di qualsiasi variabile: variabili locali, parametri di metodo, campi di classe e variabili di classe statiche.
Si noti che final
prima di un nome di variabile è solo una protezione contro eventuali modifiche a quella variabile . Se una variabile memorizza un riferimento a un oggetto, l'oggetto può ancora essere modificato.
Esempio:
|
Creiamo un array. Questo non è consentito: la data variabile è dichiarata come final . Ma puoi farlo. E anche questo. |
Costanti globali
Se decidi di dichiarare costanti globali nel tuo programma, devi creare variabili di classe statiche e renderle public
e final
. Esiste uno stile speciale per i nomi di tali variabili: sono scritte tutte in maiuscolo, con un carattere di sottolineatura usato per separare le parole.
Esempi:
class Solution
{
public static final String SOURCE_ROOT = "c:\\projects\\my\\";
public static final int DISPLAY_WIDTH = 1024;
public static final int DISPLAY_HEIGHT = 768;
}
2. Ombreggiatura variabile
Come abbiamo detto prima, non è possibile creare più variabili locali con lo stesso nome nello stesso metodo. In diversi metodi, puoi.
Ma ecco cosa probabilmente non sai: le variabili di istanza e le variabili di metodo locale possono avere lo stesso nome.
Esempio:
Codice | Visibilità variabile |
---|---|
|
|
Nel add
metodo, abbiamo dichiarato una variabile locale denominata sum
. Fino alla fine del metodo, oscura (o maschera ) la sum
variabile di istanza.
Ok, dici, c'era da aspettarselo in un certo senso. Ma non è la fine della storia. Si scopre che se una variabile di istanza è ombreggiata da una variabile locale, c'è ancora un modo per fare riferimento alla variabile di istanza all'interno del metodo. Lo facciamo scrivendo la this
parola chiave prima del suo nome:
this.name
Ecco un esempio in cui il conflitto di nomi è stato risolto correttamente:
Codice | Visibilità variabile |
---|---|
|
|
Le variabili count
e sum
sono disponibili ovunque con o senza la this
parola chiave. Nelle righe in cui la sum
variabile locale oscura la sum
variabile di istanza, sum
è possibile accedere alla variabile di istanza solo utilizzando la this
parola chiave.
Se una variabile di classe statica anziché una variabile di istanza è ombreggiata, è necessario accedervi tramite il nome della classe anziché la this
parola chiave:
ClassName.name
Esempio:
Codice | Visibilità variabile |
---|---|
|
|
Puoi accedere alle variabili statiche count
e sum
ovunque con o senza utilizzare il nome della classe Solution
come prefisso. In quelle righe in cui la sum
variabile locale ombreggia la sum
variabile di istanza, l'accesso alla sum
variabile di istanza è possibile solo quando si usa Solution
come prefisso.
3. Variabili all'interno di un for
ciclo
E un altro fatto piccolo ma interessante.
C'è anche un punto in cui una variabile viene dichiarata in un modo speciale — all'interno di un for
loop .
Ricorderete che un for
ciclo tipicamente ha una variabile contatore tra parentesi. E quale sarà la visibilità di questa variabile? Dopo tutto, non è nel corpo del ciclo. È l'intero metodo? O no?
La risposta corretta è: una variabile dichiarata nell'intestazione di un for
ciclo è visibile solo nel corpo del ciclo e nell'intestazione del for
ciclo .
Esempio:
Codice | Visibilità variabile |
---|---|
|
|
Quindi, puoi sempre scrivere cicli uno dopo l'altro nel tuo codice e utilizzare variabili contatore con lo stesso nome, il che non creerà alcun problema.
Esempio:
Codice | Visibilità variabile |
---|---|
|
|
GO TO FULL VERSION