Staattinen muuttuja on yhteinen kaikille luokan instansseille (tai objekteille), koska se on luokan tason muuttuja. Toisin sanoen voidaan sanoa, että staattisesta muuttujasta luodaan vain yksi kopio, joka jaetaan kaikkien luokan instanssien kesken. Muistin varaaminen tällaisille muuttujille tapahtuu vain kerran, kun luokka ladataan muistiin.
Muuttujien tapaan meillä voi olla staattinen lohko, staattinen metodi ja staattinen luokka, lue niistä: static keyword in java.
Static variable Syntax
static keyword, jota seuraa datatyyppi, jota seuraa muuttujan nimi.
static data_type variable_name;
Kuten mainitsin edellä, että staattiset muuttujat ovat yhteiskäytössä luokkatason instansseissa, niistä on hyötyä silloin, kun tarvitsemme muistinhallintaa. Joissain tapauksissa halutaan kaikille instansseille yhteinen arvo, kuten globaali muuttuja, jolloin on paljon parempi julistaa ne staattisiksi, koska näin voidaan säästää muistia (koska staattisille muuttujille luodaan vain yksi kopio).
ymmärretään tämä esimerkin avulla:
Esimerkki staattisesta muuttujasta Javassa
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); }}
Tulos:
Obj1: count is=2Obj2: count is=2
Kuten yllä olevasta esimerkistä näkee, että molemmat objektit jakavat saman kopion staattisesta muuttujasta, minkä vuoksi ne näyttivät saman count-arvon.
Esimerkki 2: Staattista muuttujaa voidaan käyttää suoraan staattisessa metodissa
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(); }}
Tulos:
Age is: 30Name is: Steve
Staattisen muuttujan alustaminen
- Staattiset muuttujat alustetaan, kun luokka ladataan.
- Staattiset muuttujat alustetaan, ennen kuin mitään luokan objektia luodaan.
- Stattiset muuttujat alustetaan ennen kuin jokin luokan staattinen metodi suoritetaan.
Stattisten ja ei-stattisten muuttujien oletusarvot ovat samat.
primitiiviset kokonaisluvut(long
, short
jne.): 0
primitiiviset liukuluvut(float
, double
): 0.0
boolean: false
objektireferenssit: null
Stattiset finaalimuuttujat
Stattiset finaalimuuttujat ovat vakioita. Katsotaanpa alla olevaa koodia:
public class MyClass{ public static final int MY_VAR=27;}
Huomautus: Constant variable name should be in Caps! you can use underscore(_) between.
1) Yllä oleva koodi suoritetaan heti kun luokka MyClass
on ladattu, ennen kuin staattista metodia kutsutaan ja jopa ennen kuin mitään staattista muuttujaa voidaan käyttää.
2) Muuttuja MY_VAR
on public, mikä tarkoittaa, että mikä tahansa luokka voi käyttää sitä. Se on staattinen muuttuja, joten sen käyttämiseen ei tarvita mitään luokan objektia. Se on final, joten tämän muuttujan arvoa ei voi koskaan muuttaa nykyisessä tai missään luokassa.
Keskeistä:
final-muuttuja tarvitsee aina alustuksen, jos sitä ei alusteta, se heittää kääntämisvirheen. katso alla olevaa esimerkkiä-
public class MyClass{ public static final int MY_VAR;}
Error: variable MY_VAR might not have been initialized
.