Een statische variabele is gemeenschappelijk voor alle instanties (of objecten) van de klasse omdat het een variabele op klassenniveau is. Met andere woorden, je kan zeggen dat slechts één enkele kopie van een statische variabele wordt aangemaakt en gedeeld door alle instanties van de klasse. Geheugentoewijzing voor dergelijke variabelen gebeurt slechts een keer wanneer de klasse wordt geladen in het geheugen.
Zoals variabelen kunnen we statisch blok, statische methode en statische klasse, om te lezen over hen verwijzen: statische trefwoord in java.
Statische variabele Syntax
statische trefwoord gevolgd door het gegevenstype, gevolgd door variabele naam.
static data_type variable_name;
Zoals ik hierboven vermeld dat de statische variabelen worden gedeeld onder alle instanties van de klasse, ze zijn handig wanneer we moeten doen geheugenbeheer. In sommige gevallen willen we een gemeenschappelijke waarde voor alle instanties, zoals globale variabele hebben, dan is het veel beter om ze te verklaren statische als dit kan geheugen besparen (omdat slechts een kopie wordt gemaakt voor statische variabelen).
Laten we dit met een voorbeeld begrijpen:
Statische variabele voorbeeld in Java
class VariableDemo{ static int count=0; public void increment() { count++; } public static void main(String args) { VariableDemo obj1=new VariableDemo(); VariableDemo obj2=new VariableDemo(); obj1.increment(); obj2.increment(); System.out.println("Obj1: count is="+obj1.count); System.out.println("Obj2: count is="+obj2.count); }}
Uitvoer:
Obj1: count is=2Obj2: count is=2
Zoals u in bovenstaand voorbeeld kunt zien, delen beide objecten dezelfde kopie van de statische variabele, zodat zij dezelfde waarde van de graaf weergeven.
Voorbeeld 2: Statische variabelen zijn direct toegankelijk in een statische methode
class JavaExample{ static int age; static String name; //This is a Static Method static void disp(){ System.out.println("Age is: "+age); System.out.println("Name is: "+name); } // This is also a static method public static void main(String args) { age = 30; name = "Steve"; disp(); }}
Uitvoer:
Age is: 30Name is: Steve
Statische variabelen initialiseren
- Statische variabelen worden geïnitialiseerd wanneer de klasse wordt geladen.
- Statische variabelen worden geïnitialiseerd voordat een object van die klasse wordt aangemaakt.
- Statische variabelen worden geïnitialiseerd voordat een statische methode van de klasse wordt uitgevoerd.
De standaardwaarden voor statische en niet-statische variabelen zijn gelijk.
primitieve gehele getallen(long
, short
enz): 0
primitieve drijvende punten(float
, double
): 0,0
boolean: false
objectverwijzingen: null
Statische eindvariabelen
De statische eindvariabelen zijn constanten. Laten we eens kijken naar de code hieronder:
public class MyClass{ public static final int MY_VAR=27;}
Note: Constante variabele naam moet in Caps staan! u kunt underscore(_) ertussen gebruiken.
1) De bovenstaande code zal worden uitgevoerd zodra de class MyClass
is geladen, voordat static method is aangeroepen en zelfs voordat enige statische variabele kan worden benaderd.
2) De variabele MY_VAR
is public wat betekent dat elke class deze kan gebruiken. Het is een statische variabele zodat u geen object van klasse zult nodig hebben om het te openen. Het is definitief, zodat de waarde van deze variabele kan nooit worden gewijzigd in de huidige of in een klasse.
Key points:
definitieve variabele moet altijd worden geïnitialiseerd, als je niet initialiseren zou gooien een compilatiefout. kijk eens naar onderstaand voorbeeld-
public class MyClass{ public static final int MY_VAR;}
Error: variable MY_VAR might not have been initialized