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.


$config[zx-auto] not found$config[zx-overlay] not found