Variabile statica dentro Java

Lo statico può essere:

  1. Variabili statiche
  2. Metodi statici
  3. Blocchi statici di codice.

Diamo prima un'occhiata alle variabili statiche e ai metodi statici.

In cosa consiste la variabile statica Java?

Variabile statica dentro Java è una variabile che appartiene alla classe e viene inizializzata una sola volta all'inizio dell'esecuzione. È una variabile che appartiene alla classe e non all'oggetto (istanza). Le variabili statiche vengono inizializzate una sola volta, all'inizio dell'esecuzione. Queste variabili verranno inizializzate per prime, prima dell'inizializzazione di qualsiasi variabile di istanza.

  • Una singola copia da condividere da tutte le istanze della classe
  • È possibile accedere a una variabile statica direttamente tramite il nome della classe e non necessita di alcun oggetto

Sintassi:

<class-name>.<variable-name>

In cosa consiste il metodo statico Java?

Metodo statico in Java è un metodo che appartiene alla classe e non all'oggetto. Un metodo statico può accedere solo ai dati statici. È un metodo che appartiene alla classe e non all'oggetto (istanza). Un metodo statico può accedere solo ai dati statici. Non può accedere a dati non statici (variabili di istanza).

  • Un metodo statico può chiamare solo altri metodi statici e non può chiamare da esso un metodo non statico.
  • È possibile accedere a un metodo statico direttamente tramite il nome della classe e non necessita di alcun oggetto
  • Un metodo statico non può in alcun modo fare riferimento alle parole chiave “this” o “super”.

Sintassi:

<class-name>.<method-name>

Nota: Il metodo main è statico, poiché deve essere accessibile affinché un'applicazione possa essere eseguita, prima che venga eseguita qualsiasi istanziazione.

Impariamo le sfumature delle parole chiave statiche facendo alcuni esercizi!

Esempio: come chiamare variabili e metodi statici

Passo 1) Copia il seguente codice in un editor

public class Demo{
   public static void main(String args[]){
     Student s1 = new Student();
     s1.showData();
     Student s2 = new Student();
     s2.showData();
     //Student.b++;
     //s1.showData();
  }
}

class Student {
int a; //initialized to zero
static int b; //initialized to zero only when class is loaded not for each object created.

  Student(){
   //Constructor incrementing static variable b
   b++;
  }

   public void showData(){
      System.out.println("Value of a = "+a);
      System.out.println("Value of b = "+b);
   }
//public static void increment(){
//a++;
//}

}

Passo 2) Salva e compila il codice. Esegui il codice come, JavaDimostrazione.

Passo 3) L'output previsto è mostrato di seguito


Java Metodi e variabili statiche

Il diagramma seguente mostra come vengono creati gli oggetti e le variabili di riferimento e come le diverse istanze accedono alle variabili statiche.


Java Metodi e variabili statiche

Passo 4) È possibile accedere a una variabile statica dall'esterno della classe utilizzando la sintassi NomeClasse.Nome_Variabile. Decommenta le righe n. 7 e 8 . Salva, compila ed esegui. Osservare l'output.

Value of a = 0
Value of b = 1
Value of a = 0
Value of b = 2
Value of a = 0
Value of b = 3

Passo 5) Decommenta la riga 25,26 e 27 . Salva, compila ed esegui.

	 error: non-static variable a cannot be referenced from a static context a++; 

Passo 6) Errore = ? Questo perché non è possibile accedere alla variabile di istanza “a"dal metodo della classe statica Java"incremento".

In cosa consiste il blocco statico Java?

. blocco statico è un blocco di istruzioni all'interno di a Java classe che verrà eseguita quando una classe viene caricata per la prima volta nel file JVM. UN il blocco statico aiuta a inizializzare i membri dati statici, proprio come i costruttori aiutano a inizializzare i membri dell'istanza.

class Test{
 static {
 //Code goes here
 }
}

Il programma seguente è un esempio di blocco statico Java.

Esempio: come accedere al blocco statico

public class Demo {
 static int a;
 static int b;
 static {
    a = 10;
    b = 20;
 }
 public static void main(String args[]) {

  System.out.println("Value of a = " + a);
  System.out.println("Value of b = " + b);

 	}
}

otterrai il seguente output del programma.

Value of a = 10
Value of b = 20

Riassumi questo post con: