Variabile statica dentro Java

โšก Riepilogo intelligente

Variabile statica dentro Java Appartiene alla classe piuttosto che a un oggetto specifico e viene inizializzato una sola volta al caricamento della classe. Una singola copia condivisa serve tutte le istanze, accessibili direttamente tramite il nome della classe senza la necessitร  di creare un oggetto.

  • ๐Ÿ“ฆ Variabile statica: Appartiene alla classe, ne condivide una copia tra tutte le istanze, viene inizializzato una sola volta al caricamento.
  • โš™๏ธ Metodo statico: Appartiene alla classe, puรฒ accedere solo a dati statici e ignora this/super.
  • ๐Ÿงฑ Blocco statico: Viene eseguito una sola volta al caricamento della classe per inizializzare i membri dati statici.
  • ๐Ÿ”— Accesso: Accedi direttamente ai membri statici tramite ClassName.member senza bisogno di un oggetto.
  • โ›” Restrizione: Un metodo statico non puรฒ fare riferimento direttamente a variabili non statiche (di istanza).

Variabile statica dentro Java

Lo statico puรฒ essere:

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

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 saranno 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?

Migliori 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

DOMANDE FREQUENTI

Una variabile statica appartiene alla classe e ne esiste una copia condivisa per tutti gli oggetti. Una variabile di istanza appartiene a ciascun oggetto e ne ottiene una copia separata per ogni istanza, inizializzata al momento della creazione dell'oggetto.

No. Un metodo statico puรฒ accedere solo a dati statici e ad altri metodi statici. Fare riferimento a una variabile non statica (di istanza) da un contesto statico causa un errore di compilazione, perchรฉ l'oggetto non esiste ancora.

Un blocco statico viene eseguito una sola volta, al primo caricamento della classe nella JVM, prima della creazione di qualsiasi oggetto o dell'esecuzione del metodo main. Viene utilizzato per inizializzare i membri dati statici.

L'IA puรฒ analizzare come viene utilizzato un campo o un metodo e raccomandare statici quando i dati sono condivisi tra tutte le istanze o non รจ necessario alcuno stato dell'istanza, aiutaping Gli sviluppatori evitano oggetti superflui e riducono l'utilizzo della memoria.

Sรฌ. L'analisi assistita dall'IA puรฒ segnalare stati statici mutabili che causano problemi di sicurezza dei thread, dipendenze globali nascoste o difficoltร  di test, e suggerire alternative piรน sicure come i campi di istanza o l'iniezione delle dipendenze.

Riassumi questo post con: