Kedy sú statické premenné inicializované v prostredí Java?

1. Úvod

V tomto tutoriáli preskúmame proces inicializácie statickej premennej. Java Virtual Machine (JVM) sleduje tento proces počas načítania triedy.

2. Proces inicializácie

Na vysokej úrovni JVM vykonáva nasledujúce kroky:

Najskôr sa trieda načíta a prepojí. Potom fáza „inicializácie“ tohto procesu spracuje inicializáciu statickej premennej. Nakoniec hlavný nazýva sa metóda spojená s triedou.

V nasledujúcej časti sa pozrieme na inicializáciu premennej triedy.

3. Premenná triedy

V Jave sa statické premenné nazývajú aj premenné triedy. To znamená, že patria do triedy a nie do konkrétnej inštancie. Ako výsledok, inicializácia triedy inicializuje statické premenné.

Naproti tomu inštancia triedy inicializuje premenné inštancie (nestatické premenné). Všetky inštancie triedy zdieľajú statické premenné triedy.

Zoberme si príklad triedy StaticVariableDemo:

public class StaticVariableDemo {public static int i; public static int j = 20; public StaticVariableDemo () {}}

Najskôr JVM vytvorí a Trieda objekt pre triedu StaticVariableDemo. Ďalej statický inicializátory polí priraďujú statickým poliam zmysluplnú predvolenú hodnotu. V našom príklade vyššie je to premenná triedy i sa najskôr inicializuje pomocou int predvolená hodnota nula.

Textová objednávka sa vzťahuje na statické polia. Najprv, i sa inicializuje a potom j bude inicializovaný. Potom, trieda a jej statické členy budú viditeľné pre ostatné triedy.

4. Premenná v statickom bloku

Zoberme si ďalší príklad:

verejná trieda StaticVariableDemo {public static int z; statický {z = 30; } verejné StaticVariableDemo () {}}

V takom prípade bude inicializácia premennej postupná. Napríklad JVM pôvodne priraďuje premennú z na predvolenú hodnotu int hodnota 0. Potom v statický blok, zmení sa na 30.

5. Premenná v statickej vnorenej triede

Na záver si vezmime príklad vnorenej triedy vo vnútri vonkajšej StaticVariableDemo trieda:

verejná trieda StaticVariableDemo {public StaticVariableDemo () {} statická trieda Vnorená {verejný statický reťazec nestedClassStaticVariable = "test"; }}

V tomto prípade trieda StaticVariableDemo načíta Vnorené trieda. Inicializuje sa statická premenná nestedClassStaticVariable.

6. Záver

V tomto krátkom článku sme stručne vysvetlili inicializáciu statickej premennej. Ďalšie informácie nájdete v špecifikácii jazyka Java.

Útržky kódu sú ako vždy k dispozícii na GitHub.


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