Variabile di istanza vs Variabile locale
Una variabile di istanza è un tipo di variabile presente nella programmazione orientata agli oggetti. È una variabile definita in una classe e ogni oggetto di quella classe contiene una copia separata di quella variabile. D'altra parte, l'uso di variabili locali non è limitato ai linguaggi di programmazione orientati agli oggetti. È una variabile che può essere valutata solo all'interno di un particolare blocco di codice (es. Funzione, blocco loop, ecc.) In cui è definita. Per questo motivo, si dice che le variabili locali abbiano un ambito locale.
Cos'è una variabile di istanza?
Le variabili di istanza vengono utilizzate nella programmazione orientata agli oggetti per memorizzare lo stato di ogni oggetto in una classe. Sono anche note come variabili membro o variabili di campo. Le variabili di istanza vengono dichiarate senza utilizzare la parola chiave static in Java. I valori memorizzati nelle variabili di istanza sono univoci per ogni oggetto (ogni oggetto ha una copia separata), ei valori in essi memorizzati rappresentano lo stato di quell'oggetto. Lo spazio per una variabile di istanza viene allocato nell'heap, quando l'oggetto viene allocato nell'heap. Pertanto, le variabili di istanza vengono mantenute in memoria finché l'oggetto è attivo. Ad esempio, il colore di un'auto è indipendente dal colore di un'altra auto. Quindi il colore di un oggetto auto può essere memorizzato in una variabile di istanza. In pratica, le variabili di istanza vengono dichiarate all'interno delle classi e all'esterno dei metodi. Generalmente,le variabili di istanza sono dichiarate private in modo che sia possibile accedervi solo all'interno della classe in cui sono dichiarate.
Cos'è una variabile locale?
Le variabili locali sono variabili con ambito locale e sono dichiarate all'interno di un blocco di codice specifico. Le variabili locali possono essere viste come variabili utilizzate da un metodo per memorizzare il suo stato temporaneo. L'ambito di una variabile locale viene determinato utilizzando la posizione in cui viene dichiarata la variabile e le parole chiave speciali non vengono utilizzate per questo scopo. Tipicamente, l'accesso a una variabile locale è limitato all'interno del blocco di codice che è dichiarato (cioè tra le parentesi graffe di apertura e chiusura di quel blocco di codice). Le variabili locali sono generalmente memorizzate nello stack di chiamate. Ciò consentirebbe alle chiamate di funzione ricorsive di mantenere le proprie copie delle variabili locali da memorizzare in spazi di indirizzi di memoria separati. Quando il metodo termina la sua esecuzione, le informazioni su quel metodo vengono estratte dallo stack di chiamate, distruggendo anche le variabili locali che sono state memorizzate.
Qual è la differenza tra Variabile di istanza e Variabile locale?
Le variabili di istanza vengono dichiarate all'interno di classi al di fuori dei metodi e memorizzano lo stato di un oggetto, mentre le variabili locali sono dichiarate all'interno di blocchi di codice e vengono utilizzate per memorizzare lo stato di un metodo. Una variabile di istanza è attiva fintanto che l'oggetto che contiene quella variabile è attiva, mentre una variabile locale è attiva durante l'esecuzione di quel metodo / blocco di codice. È possibile accedere a una variabile di istanza (dichiarata pubblica) all'interno della classe, mentre è possibile accedere a una variabile locale solo all'interno del blocco di codice dichiarato. L'utilizzo delle variabili di istanza è limitato solo alla programmazione orientata agli oggetti, mentre le variabili locali non hanno tale limitazione.