Java >> Java tutorial >  >> Tag >> static

Hvornår initialiseres statiske variabler i Java?

1. Introduktion

I denne tutorial vil vi udforske initialiseringsprocessen for statiske variabler. Java Virtual Machine (JVM) følger denne proces under indlæsning af klasse.

2. Initialiseringsproces

På et højt niveau udfører JVM følgende trin:

Først indlæses og linkes klassen. Derefter behandler "initialiseringsfasen" af denne proces initialiseringen af ​​den statiske variabel. Til sidst, hoved- metode forbundet med klassen kaldes.

I næste afsnit vil vi se på initialisering af klassevariabler.

3. Klassevariabel

I Java kaldes statiske variable også for klassevariable. Det vil sige, at de tilhører en klasse og ikke en bestemt instans. Som et resultat heraf vil klasseinitialisering initialisere statiske variable.

I modsætning hertil vil en klasses instans initialisere instansvariablerne (ikke-statiske variabler). Alle forekomster af en klasse deler klassens statiske variable.

Lad os tage et eksempel på klasse StaticVariableDemo :

public class StaticVariableDemo {  
    public static int i;
    public static int j = 20;

    public StaticVariableDemo() {}
}

Først opretter JVM en Klasse objekt for klassen StaticVariableDemo . Dernæst den statiske feltinitialiserere tildeler en meningsfuld standardværdi til de statiske felter. I vores eksempel ovenfor er klassevariablen i initialiseres først med en int standardværdien nul.

Den tekstmæssige rækkefølge gælder for statiske felter. Først i initialiseres og derefter j vil blive initialiseret. Efter det, klassen og dens statiske medlemmer vil være synlige for andre klasser.

4. Variabel i en statisk blok

Lad os tage et andet eksempel:

public class StaticVariableDemo {  
    public static int z;

    static {
        z = 30;
    }
    public StaticVariableDemo() {}
}

I dette tilfælde vil den variable initialisering være i rækkefølge. For eksempel tildeler JVM'en oprindeligt variabel z til en standard int værdien 0. Derefter, i den statiske blok, ændres den til 30.

5. Variabel i en statisk indlejret klasse

Lad os endelig tage et eksempel på den indlejrede klasse inde i den ydre StaticVariableDemo klasse:

public class StaticVariableDemo {  
    public StaticVariableDemo() {}
    
    static class Nested {
        public static String nestedClassStaticVariable = "test";
    }
}

I dette tilfælde er klassen StaticVariableDemo indlæser Indlejret klasse. Det vil initialisere den statiske variabel nestedClassStaticVariable .

6. Konklusion

I denne korte artikel har vi kort forklaret initialiseringen af ​​den statiske variabel. For yderligere detaljer, se Java-sprogspecifikationen.

Som altid er kodestykkerne tilgængelige på GitHub.


Java tag