Vakiot

Lukittu taikalaatikko

Muuttujat ajattelimme taikalaatikoiksi, joihin voi pistää erimuotoisia esineitä. Myös vakiot voimme ajatella taikalaatikoina. Ero on kuitenkin siinä, että näiden laatikoiden kannet suljetaan pysyvästi lukolla ensimmäisen sijoituksen jälkeen, eikä esinettä näin ollen voi enää vaihtaa, kun sen sinne kerran on laittanut. Taikalaatikkossa on pieni kurkistusaukko, josta voi kurkistaa sisälle ja katsoa, mikä esine siellä on.

Javassa vakioiden esittely tapahtuu lähes samalla tavalla kuin muuttujien, määrittelyyn lisätään vain sana final ilmoittamaan, että arvo, joka muuttujaan laitetaan on lopullinen, eikä sitä voi muuttaa. Vakioiden nimet on tapana kirjoittaa kokonaan isoilla kirjaimilla, jotta ne ohjelmassa erottuisivat selvästi muuttujista. Voit luoda esim. vakion IKäNI näin:

      final int IKäNI;
    

Ensimmäisen sijoituksen jälkeen et voi tehdä tuohon vakioon sijoituksia. Selkeämpää ja suositeltavampaa onkin heti määrittelyssä tehdä sijoitus eli alustaa vakio:

      final int IKäNI = 15;
    

Vaikka vakioihin voi sijoittaa vain kerran, voi muuttujiin kopioida vakion arvon niin monta kertaa kuin haluaa, tämä sijoitushan ei vaikuta vakion arvoon. Esim. jos sinulla saman ikäinen sisko, voit tehdä näin:

      int siskonIkä;
      final int IKäNI = 15;

      siskonIkä = IKäNI;
    

Jos ihmettelet, miksi tällaisia vakioita oikein tarvitaan, ajattele seuraavaa tilannetta: kirjoitat pitkän ohjelman, jossa käytät monta kertaa omaa ikääsi ja kirjoitat sen aina numeroin. Ensiksikin, sinun on helppo tehdä kirjoitusvirheitä ja kääntäjä ei valita, jos jossain vaiheessa kirjoittanut vahingossa iäksesi 51. Sinun on tällöin todella vaikeaa löytää virhettä, ohjelma vain palauttaa ihmeellisiä tuloksia. Toiseksi, joku toinen ei ehkä ymmärrä, mitä arvo 51 tarkoittaa. Kaikkein suurin ongelma tulee, kun vuoden päästä olet vanhempi. Tällöin joudut käymään koko pitkän ohjelman läpi ja vaihtamaan kaikki arvot 15 arvoksi 16. Sen sijaan, jos olet käyttänyt vakiota IKäNI, sinun on helppo vain muuttaa vakioon alussa sijoittamasi arvo!! Käytä siis vakioita aina silloin, kun käytät jotakin numeroarvoa ohjelmassasi useammin kuin kerran.