A statikus változó az osztály minden példánya (vagy objektuma) számára közös, mivel ez egy osztályszintű változó. Más szóval azt mondhatjuk, hogy a statikus változónak csak egyetlen példányát hozzuk létre, és azt osztjuk meg az osztály összes példánya között. Az ilyen változók memóriafoglalása csak egyszer történik meg, amikor az osztály betöltődik a memóriába.
A változókhoz hasonlóan statikus blokk, statikus metódus és statikus osztály is lehet, ezekről olvashatunk: static keyword in java.
Static variable Syntax
static keyword followed by data type, followed by variable name.
static data_type variable_name;
Mivel fentebb említettem, hogy a statikus változókat az osztály minden példánya megosztja, hasznosak, amikor memóriakezelést kell végeznünk. Bizonyos esetekben azt szeretnénk, hogy az összes példánynak közös értéke legyen, mint a globális változó, akkor sokkal jobb, ha statikusnak nyilvánítjuk őket, mivel így memóriát takaríthatunk meg (mert a statikus változóknál csak egyetlen másolat jön létre).
megértjük ezt egy példával:
Statikus változó példa Java-ban
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); }}
Kimenet:
Obj1: count is=2Obj2: count is=2
Amint a fenti példában láthatjuk, hogy mindkét objektum a statikus változó egyazon példányát használja, ezért mutatták ki ugyanazt a számértéket.
2. példa: A statikus változót közvetlenül egy statikus metódusban lehet elérni
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(); }}
Kimenet:
Age is: 30Name is: Steve
Statikus változó inicializálása
- A statikus változókat az osztály betöltésekor inicializáljuk.
- A statikus változókat az adott osztály bármely objektumának létrehozása előtt inicializáljuk.
- A statikus változók inicializálása az osztály bármely statikus metódusának végrehajtása előtt történik.
A statikus és nem statikus változók alapértékei megegyeznek.
primitív egész számok(long
, short
stb.): 0
primitív lebegőpontok(float
, double
): 0.0
boolean: false
objektum hivatkozások: null
Statikus végleges változók
A statikus végleges változók konstansok. Nézzük meg az alábbi kódot:
public class MyClass{ public static final int MY_VAR=27;}
Megjegyzés: A konstans változók nevének nagybetűsnek kell lennie! használhatsz aláhúzást(_) közöttük.
1) A fenti kód végrehajtódik, amint az osztály MyClass
betöltődik, mielőtt a statikus metódus meghívásra kerül, és még mielőtt bármely statikus változót elérnénk.
2) A MY_VAR
változó nyilvános, ami azt jelenti, hogy bármely osztály használhatja. Ez egy statikus változó, tehát nincs szükségünk semmilyen osztályobjektumra ahhoz, hogy hozzáférjünk hozzá. Ez végleges, tehát a változó értéke soha nem változtatható meg az aktuális vagy bármelyik osztályban.
Főbb pontok:
A végleges változó mindig inicializálásra szorul, ha nem inicializálod, akkor fordítási hibát dob. nézd meg az alábbi példát-
public class MyClass{ public static final int MY_VAR;}
Error: variable MY_VAR might not have been initialized
Error: variable MY_VAR might not have been initialized
.