Wanneer worden statische variabelen geïnitialiseerd in Java?

1. Inleiding

In deze zelfstudie verkennen we het initialisatieproces van statische variabelen. De Java Virtual Machine (JVM) volgt dit proces tijdens het laden van de les.

2. Initialisatieproces

Op hoog niveau voert de JVM de volgende stappen uit:

Eerst wordt de klasse geladen en gekoppeld. Vervolgens verwerkt de "initialiseren" -fase van dit proces de initialisatie van de statische variabele. eindelijk, de hoofd methode die aan de klasse is gekoppeld, wordt aangeroepen.

In de volgende sectie kijken we naar de initialisatie van klassevariabelen.

3. Klasse Variabele

In Java worden statische variabelen ook wel klassevariabelen genoemd. Dat wil zeggen, ze behoren tot een klasse en niet tot een bepaald exemplaar. Als resultaat, class initialisatie zal statische variabelen initialiseren.

In tegenstelling hiermee initialiseert de instantie van een klasse de instantievariabelen (niet-statische variabelen). Alle instanties van een klasse delen de statische variabelen van de klasse.

Laten we een voorbeeld nemen van klasse StaticVariableDemo:

openbare klasse StaticVariableDemo {openbare statische int i; openbare statische int j = 20; openbaar StaticVariableDemo () {}}

Ten eerste maakt de JVM een Klasse object voor de klas StaticVariableDemo. Vervolgens de statisch veldinitialisten kennen een betekenisvolle standaardwaarde toe aan de statische velden. In ons voorbeeld hierboven is de class variabele ik wordt eerst geïnitialiseerd met een int standaardwaarde van nul.

De tekstuele volgorde is van toepassing op statische velden. Eerste, ik zal initialiseren en dan j wordt geïnitialiseerd. Daarna, de klas en zijn statische leden zijn zichtbaar voor andere klassen.

4. Variabele in een statisch blok

Laten we nog een voorbeeld nemen:

openbare klasse StaticVariableDemo {openbare statische int z; statisch {z = 30; } openbare StaticVariableDemo () {}}

In dit geval vindt de initialisatie van de variabele op volgorde plaats. De JVM wijst bijvoorbeeld aanvankelijk een variabele toe z naar een standaard int waarde van 0. Dan, in de statisch blok, wordt dit gewijzigd in 30.

5. Variabele in een statische geneste klasse

Laten we tot slot een voorbeeld nemen van de geneste klasse in de buitenste StaticVariableDemo klasse:

openbare klasse StaticVariableDemo {openbare StaticVariableDemo () {} statische klasse Genest {openbare statische String nestedClassStaticVariable = "test"; }}

In dit geval de class StaticVariableDemo laadt het Genest klasse. Het initialiseert de statische variabele nestedClassStaticVariable.

6. Conclusie

In dit korte artikel hebben we de initialisatie van statische variabelen kort uitgelegd. Raadpleeg de Java-taalspecificatie voor meer informatie.

Zoals altijd zijn de codefragmenten beschikbaar op GitHub.


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