En statisk variabel är gemensam för alla instanser (eller objekt) av klassen eftersom det är en variabel på klassnivå. Med andra ord kan man säga att endast en enda kopia av den statiska variabeln skapas och delas mellan alla instanser av klassen. Minnesallokering för sådana variabler sker bara en gång när klassen laddas i minnet.
Likt variabler kan vi ha statiska block, statisk metod och statisk klass, för att läsa om dem se: static keyword in java.
Statisk variabel Syntax
statiskt nyckelord följt av datatyp, följt av variabelnamn.
static data_type variable_name;
Som jag nämnde ovan att statiska variabler delas av alla instanser av klassen, är de användbara när vi behöver göra minneshantering. I vissa fall vill vi ha ett gemensamt värde för alla instanser, t.ex. en global variabel, och då är det mycket bättre att deklarera dem som statiska eftersom detta kan spara minne (eftersom endast en enda kopia skapas för statiska variabler).
Vi kan förstå detta med ett exempel:
Statisk variabel exempel i 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); }}
Output:
Obj1: count is=2Obj2: count is=2
Som du kan se i exemplet ovan delar båda objekten samma kopia av den statiska variabeln, vilket är anledningen till att de visar samma värde på antal.
Exempel 2: Statisk variabel kan nås direkt i en statisk metod
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(); }}
Output:
Age is: 30Name is: Steve
Initialisering av statiska variabler
- Statiska variabler initialiseras när klassen laddas.
- Statiska variabler initialiseras innan något objekt av den klassen skapas.
- Statiska variabler initialiseras innan någon statisk metod i klassen exekveras.
Standardvärden för statiska och icke-statiska variabler är desamma.
Primitive integers(long
, short
etc): 0
Primitive floating points(float
, double
): 0.0
boolean: false
objektreferenser: null
Statiska slutvariabler
De statiska slutvariablerna är konstanter. Låt oss ta en titt på koden nedan:
public class MyClass{ public static final int MY_VAR=27;}
Notera: Namnet på den konstanta variabeln ska stå i Caps! du kan använda understrykning (_) mellan dem.
1) Ovanstående kod kommer att exekveras så snart klassen MyClass
laddas, innan statiska metoder anropas och även innan någon statisk variabel kan nås.
2) Variabeln MY_VAR
är offentlig, vilket innebär att vilken klass som helst kan använda den. Det är en statisk variabel så du behöver inget objekt av klassen för att få tillgång till den. Den är final så värdet av denna variabel kan aldrig ändras i den aktuella eller i någon klass.
Nyckelpunkter:
finalvariabeln behöver alltid initialiseras, om du inte initialiserar den skulle den kasta ett kompileringsfel.Ta en titt på nedanstående exempel-
public class MyClass{ public static final int MY_VAR;}
Error: variable MY_VAR might not have been initialized
.