Hvornår initialiseres statiske variabler i Java?
1. Introduktion
I denne vejledning undersøger vi den statiske variabel initialiseringsproces. Java Virtual Machine (JVM) følger denne proces under klasseindlæsning.
2. Initialiseringsproces
På et højt niveau udfører JVM følgende trin:

For det første er klassen indlæst og linket. Derefter behandler "initialiseringsfasen" i denne proces den statiske variabelinitialisering. Endelig blev vigtigste metode tilknyttet klassen kaldes.
I det næste afsnit ser vi på initialisering af klassevariabler.
3. Klassevariabel
I Java kaldes statiske variabler også klassevariabler. Det vil sige, de tilhører en klasse og ikke en særlig instans. Som resultat, klasse initialisering initialiserer statiske variabler.
I modsætning hertil initialiserer en klasses forekomst instansvariablerne (ikke-statiske variabler). Alle forekomster af en klasse deler klassens statiske variabler.
Lad os tage et eksempel på en klasse StaticVariableDemo:
offentlig klasse StaticVariableDemo {offentlig statisk int i; offentlig statisk int j = 20; offentlig StaticVariableDemo () {}}
For det første opretter JVM en Klasse objekt til klassen StaticVariableDemo. Dernæst statisk feltinitialiserere tildeler de statiske felter en meningsfuld standardværdi. I vores eksempel ovenfor klassevariablen jeg initialiseres først med en int standardværdien på nul.
Tekstordren gælder for statiske felter. Først, jeg vil initialisere 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:
offentlig klasse StaticVariableDemo {offentlig statisk int z; statisk {z = 30; } offentlig StaticVariableDemo () {}}
I dette tilfælde vil den variable initialisering være i rækkefølge. For eksempel tildeler JVM oprindeligt variabel z til en standard int værdi på 0. Derefter i statisk blok, ændres den til 30.
5. Variabel i en statisk indlejret klasse
Lad os endelig tage et eksempel på den indlejrede klasse inde i det ydre StaticVariableDemo klasse:
public class StaticVariableDemo {public StaticVariableDemo () {} static class Nested {public static String nestedClassStaticVariable = "test"; }}
I dette tilfælde klassen StaticVariableDemo indlæser Indlejret klasse. Det initialiserer den statiske variabel nestedClassStaticVariable.
6. Konklusion
I denne korte artikel har vi kort forklaret den statiske variabelinitialisering. For yderligere oplysninger, se Java Language Specification.
Som altid er kodestykkerne tilgængelige på GitHub.