Ciò a cui ti riferisci è lo scopo di una variabile.
variabili all'interno metodi sono accessibili solo all'interno di questo metodo, cioè an_integer
all'interno main
-method non può fare riferimento fuori del metodo main
. Le variabili possono anche avere ambiti più ristretti, per esempio all'interno di loop. La classica variabile iterating di un ciclo for
è disponibile solo nel suo ciclo, dopodiché è scomparsa.
Le variabili esterne ai metodi sono denominate campi. Dipende dal suo modificatore di accesso dove può essere visto. I campi Private
, ad esempio, sono disponibili solo all'interno di questa classe, i campi public
sono accessibili da qualsiasi luogo (altri modificatori di accesso sono protected
e nessuno, che ricade su un valore predefinito). Fondamentalmente, puoi usare un campo all'interno di una classe per accedere al suo valore da ogni metodo all'interno di questa classe, ma questo potrebbe essere pericoloso se più thread accedono alla stessa istanza di una classe, ma questa è tutta un'altra storia.
Un campo e una variabile locale possono avere lo stesso nome, il che può causare confusione. Generalmente preferisco non farlo, o, forse meglio, fare sempre riferimento ai campi con un accessorio this
. Non sono pienamente sicuro se ci sia una preferenza per variabili locali rispetto a campi con lo stesso nome, ma suppongo che le variabili locali abbiano una priorità più alta nel determinare quale fosse il significato di una.
Static
indica che questa variabile non appartiene a un'istanza di una classe, ma alla classe stessa. I campi (e i metodi) Static
possono essere letti (o richiamati) senza dover prima inizializzare la classe. Un esempio potrebbe essere un valore standard di una classe, o forse un metodo factory (se è un metodo). I campi Static
possono anche essere utili per le costanti, insieme al modificatore final
. Un campo public final static
è praticamente una costante globale.
fuori dalla classe per altre classi nello stesso pacchetto – nachokk
@nachokk: solo in questo caso. Dipende dallo specificatore di accesso. – pratZ
Questo codice non verrà compilato, poichè 'varOne' non è statico, quindi non è possibile accedervi dal metodo statico' main() '. – bcsb1001