En statisk variabel er fælles for alle instanser (eller objekter) af klassen, fordi det er en variabel på klasseniveau. Med andre ord kan man sige, at der kun oprettes en enkelt kopi af den statiske variabel, som deles mellem alle klassens instanser. Hukommelsesallokering til sådanne variabler sker kun én gang, når klassen indlæses i hukommelsen.
Som variabler kan vi have statisk blok, statisk metode og statisk klasse, for at læse om dem henvises til: static keyword in java.
Statisk variabel Syntaks
statisk nøgleord efterfulgt af datatype, efterfulgt af variabelnavn.
static data_type variable_name;
Som jeg nævnte ovenfor, at de statiske variabler deles blandt alle klassens instanser, er de nyttige, når vi skal foretage hukommelsesstyring. I nogle tilfælde ønsker vi at have en fælles værdi for alle instanser som globale variabler, så er det meget bedre at erklære dem statiske, da dette kan spare hukommelse (fordi der kun oprettes en enkelt kopi for statiske variabler).
Lad os forstå dette med et eksempel:
Statisk variabel eksempel 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 ovenstående eksempel, deler begge objekter den samme kopi af den statiske variabel, hvorfor de viste den samme værdi af count.
Eksempel 2: Statisk variabel kan tilgås direkte i en statisk metode
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 af statiske variabler
- Statiske variabler initialiseres, når klassen indlæses.
- Statiske variabler initialiseres, før der oprettes et objekt af den pågældende klasse.
- Statiske variabler initialiseres, før en statisk metode i klassen udføres.
Defaultværdierne for statiske og ikke-statiske variabler er de samme.
primitive hele tal(long
, short
osv.): 0
primitive flydende punkter(float
, double
): 0.0
boolean: false
objektreferencer: null
Statiske endelige variabler
De statiske endelige variabler er konstanter. Lad os se på koden nedenfor:
public class MyClass{ public static final int MY_VAR=27;}
Bemærkning: Konstante variabelnavne skal være i Caps! du kan bruge understregning(_) imellem.
1) Ovenstående kode vil blive udført, så snart klassen MyClass
er indlæst, før statisk metode kaldes, og endda før der kan tilgås nogen statisk variabel.
2) Variablen MY_VAR
er offentlig, hvilket betyder, at enhver klasse kan bruge den. Det er en statisk variabel, så du behøver ikke noget objekt af klassen for at få adgang til den. Det er final, så værdien af denne variabel kan aldrig ændres i den aktuelle eller i nogen klasse.
Nøglepunkter:
final variabel har altid brug for initialisering, hvis du ikke initialisere det ville kaste en kompileringsfejl.Tag et kig på nedenstående eksempel-
public class MyClass{ public static final int MY_VAR;}
Error: variable MY_VAR might not have been initialized