Når initialiseres statiske variabler i Java?
1. Introduksjon
I denne opplæringen vil vi utforske den statiske initialiseringsprosessen. Java Virtual Machine (JVM) følger denne prosessen under klasseinnlasting.
2. Initialiseringsprosess
På høyt nivå utfører JVM følgende trinn:
Først er klassen lastet og koblet. Deretter behandler "initialiseringsfasen" i denne prosessen den statiske variabelen initialisering. Til slutt, hoved- metoden tilknyttet klassen kalles.
I neste avsnitt ser vi på initialisering av klassevariabelen.
3. Klassevariabel
I Java kalles statiske variabler også klassevariabler. Det vil si at de tilhører en klasse og ikke en bestemt forekomst. Som et resultat, initialisering av klassen vil initialisere statiske variabler.
I motsetning til dette vil en klasses forekomst initialisere forekomstvariablene (ikke-statiske variabler). Alle forekomster av en klasse deler klassens statiske variabler.
La oss ta et eksempel på klassen StaticVariableDemo:
offentlig klasse StaticVariableDemo {offentlig statisk int i; offentlig statisk int j = 20; offentlig StaticVariableDemo () {}}
Først oppretter JVM en Klasse objekt for klassen StaticVariableDemo. Neste, den statisk feltinitialiserere tilordner en meningsfull standardverdi til de statiske feltene. I vårt eksempel ovenfor, klassevariabelen Jeg initialiseres først med en int standardverdien er null.
Tekstrekkefølgen gjelder statiske felt. Først, Jeg vil initialisere og deretter j vil bli initialisert. Etter det, klassen og dens statiske medlemmer vil være synlige for andre klasser.
4. Variabel i en statisk blokk
La oss ta et annet eksempel:
offentlig klasse StaticVariableDemo {offentlig statisk int z; statisk {z = 30; } offentlig StaticVariableDemo () {}}
I dette tilfellet vil variabel initialisering være i rekkefølge. For eksempel tilordner JVM opprinnelig variabel z til standard int verdien 0. Deretter, i statisk blokk, endres den til 30.
5. Variabel i en statisk nestet klasse
Til slutt, la oss ta et eksempel på den nestede klassen inne i det ytre StaticVariableDemo klasse:
offentlig klasse StaticVariableDemo {offentlig StaticVariableDemo () {} statisk klasse nestet {offentlig statisk streng nestedClassStaticVariable = "test"; }}
I dette tilfellet klassen StaticVariableDemo laster Nestet klasse. Den initialiserer den statiske variabelen nestedClassStaticVariable.
6. Konklusjon
I denne korte artikkelen har vi kort forklart den statiske variabelen initialisering. For mer informasjon, sjekk Java Language Specification.
Som alltid er kodebitene tilgjengelig på GitHub.