GeeksforGeeks

Edellytys : staattiset muuttujat, lopullinen avainsana

Staattinen muuttuja: Kun muuttujan arvo ei vaihtele, ei ole hyvä valinta käyttää instanssimuuttujaa. Silloin voimme lisätä muuttujaan staattisen muuttujan. Kun ilmoitamme muuttujan staattiseksi, luokkatasolla luodaan yksi muuttuja, joka jaetaan objektien kanssa. Kaikki muutokset tässä staattisessa muuttujassa heijastuvat muiden objektien toimintoihin. Jos staattista muuttujaa ei alusteta, JVM antaa staattiselle muuttujalle oletusarvon.

Mutta kun julistamme staattisen muuttujan final-määritteellä, niin meidän tulee huolehtia seuraavista konventioista:

  • Muuttujien julistaminen vain staattisiksi voi johtaa siihen, että niiden arvot muuttuvat yhden tai useamman sen luokan instanssin toimesta, jossa muuttuja on julistettu.
  • Muuttujien julistaminen staattisiksi final-määritteellä auttaa sinua luomaan KONSTANTIN. Muuttujasta on olemassa vain yksi kopio, jota ei voi uudelleeninitialisoida.

Tärkeitä seikkoja lopullisesta staattisesta muuttujasta:

  1. Muuttujan alustaminen Pakollinen : Jos staattinen muuttuja on julistettu lopulliseksi, meidän on suoritettava alustaminen eksplisiittisesti riippumatta siitä, käytämmekö sitä vai emme, eikä JVM tarjoa mitään oletusarvoa lopulliselle staattiselle muuttujalle.

    class Test {
    final static int x;
    public static void main(String args)
    {
    }
    }

    
    

    
    

    Oput:

    error: variable x not initialized in the default constructor
  2. Initialisointi ennen luokan lataamista : Lopullisen staattisen muuttujan osalta on pakollista, että suoritamme alustuksen ennen luokan lataamisen valmistumista. Voimme alustaa lopullisen staattisen muuttujan julistuksen yhteydessä.

    class Test {
    final static int x = 10;
    public static void main(String args)
    {
    System.out.println(x);
    }
    }

    
    

    
    

    Output:

    10
  3. Initialisointi staattisen lohkon sisällä : Voimme myös alustaa lopullisen staattisen muuttujan staattisen lohkon sisällä, koska meidän pitäisi alustaa lopullinen staattinen muuttuja ennen luokkaa ja tiedämme, että staattinen lohko suoritetaan ennen main() metodia.

    class Test {
    final static int x;
    static
    {
    x = 10;
    }
    public static void main(String args)
    {
    System.out.println(x);
    }
    }

    
    

    
    

    Output:

    10

Edellä mainittujen menetelmien lisäksi, jos yritämme alustaa lopullisen staattisen muuttujan jossain muualla, saamme käännöksen aikaisen virheen.

class Test {
final static int x;
public static void m()
{
x = 10;
}
public static void main(String args)
{
System.out.println(x);
}
}



Output:

error: cannot assign a value to final variable x

Lopullisen staattisen muuttujan toteutus

class MainClass {

final static String company = "GFG";
String name;
int rollno;
public
static void main(String args)
{
MainClass ob = new MainClass();
ob.company = "Geeksforgeeks";
ob.name = "Bishal";
ob.rollno = 007;
System.out.println(ob.company);
System.out.println(ob.name);
System.out.println(ob.rollno);
}
}



Output:

error: cannot assign a value to final variable company

Tämän artikkelin on kirjoittanut Bishal Kumar Dubey. Jos pidät GeeksforGeeksistä ja haluat osallistua, voit myös kirjoittaa artikkelin osoitteessa contribute.geeksforgeeks.org tai lähettää artikkelisi sähköpostitse osoitteeseen [email protected]. Näet artikkelisi näkyvän GeeksforGeeksin pääsivulla ja autat muita geekkejä.

Vastaa

Sähköpostiosoitettasi ei julkaista.