Sijoitukset

Muuttujia käsittelevässä kappaleessa ajattelimme muuttujia eri muotoisina taikalaatikkoina, joihin voi laittaa eri muotoisia esineitä. Seuraavassa esitetään miten tämä laittaminen eli sijoittaminen tapahtuu Javassa.

Animaatio sijoituksesta

Javassa voit laittaa eli sijoittaa muuttujiin arvoja käyttämällä yhtäsuuruusmerkkiä =. Jos Martti esim. on 15-vuotias, voidaan tätä kuvata int- tyyppisellä muuttujalla martinIkä, johon laitetaan arvo 15:

      int martinIkä;

      martinIkä = 15;
    

Huomaat, että nyt käsky muodostuu useammasta osasta: muuttujasta, johon sijoitetaan, yhtäsuuruusmerkistä ja sijoitettavasta arvosta. Näistä muodostuu lause joka päätetään puolipisteeseen totuttuun tapaan.

Jos sijoitat liukulukumuuttujaan eli muuttujaan, johon voit laittaa desimaalilukuja , voit tehdä samalla tavalla, siis sijoittaessasi esim. keskiarvo -nimiseen muuttujaan arvon 8,5 kirjoitat (huomaa, että desimaalipilkun sijasta käytetään pistettä):

      keskiarvo = 8.5;
    

Sijoitettaessa char-tyypin muuttujaan on käytettävä sijoitettavan kirjaimen tai merkin ympärillä hipsuja, siis merkkejä '', esim. 'a'. Näillä merkeillä ilmaistaan, että ei tarkoiteta muuttujaa, esim. muuttujaa a. Kun siis sijoitat kirjaimen B kirjainmuuttujaan luokka (esim. koulussa rinnakkaisluokan kirjain) , kirjoitat:

      luokka = 'B';
    

Sijoittaessasi merkkijonomuuttujaan (String) merkkijonon, on merkkijonon ympärillä käytettävä lainausmerkkejä. Jos siis haluat sijoittaa esim. merkkijonotyyppiseen muuttujaan nimi arvon Keijo Keskiverto, kirjoitat:

      nimi = "Keijo Keskiverto";
    
Animaatio sijoituksesta

Taikalaatikkojen yhteydessä ajateltiin, että esineitä voitiin myös siirtää laatikosta toiseen. Tämä onkin täysin sallittua ja yleistä ohjelmointikielissä. Javassa tämä tapahtuu yksinkertaisesti kirjoittamalla yhtäsuuruusmerkin jälkeen se muuttuja, josta arvo siirretään (eli kopioidaan). Jos Keijo on samanikäinen kuin Martti voit kirjoittaa:

      int martinIkä, keijonIkä;

      martinIkä = 15;
      keijonIkä = martinIkä;
    

Tämän voit lukea "muuttuja keijonIkä saa muuttujan martinIkä arvon". Siis kuvainnollisesti keijonIkä -nimiseen taikalaatikkoon laitetaan kopio siitä esineestä (luvusta 15), joka on taikalaatikossa nimeltä martinIkä.

Huomaa, että sijoituksessa on molempien muuttujien oltava samaa tyyppiä. Et voi tietenkään sijoittaa merkkijonomuuttujaa kokonaislukutyyppiseen muuttujaan, et myöskään kirjainmuuttujaa (char-tyyppi) merkkijonomuuttujaan (String-tyyppi). Ainoan poikkeuksen muodostaa liukulukumuuttuja (double), johon voi sijoittaa kokonaisluvun (muistat, että 3 ja 3.0 ovat sama asia!). Toisinpäin ei voi tehdä.


Sijoituksen tulostaminen ruudulle

Taikalaatikoihin saattoi kurkistaa sisälle. Niin myös muuttujiin. Tämä tapahtuu Javassa tulostamalla muuttujan arvo ruudulle. Komento on vanha tuttu System.out.println();, jota käytimme jo ohjelmassa Hei. Nyt kuitenkin laitamme käskyn sulkujen sisään sen muuttujan nimen, jonka arvon haluamme katsoa. Tulostetaan keijonIkä -muuttujan arvo ruudulle:

      System.out.println(keijonIkä);
    

Tämä käsky toimii kaikille tyypeille eli näin voit tarkistaa minkä tahansa muuttujan arvon.


Muuttujan alustus muuttujaa esiteltäessä

Kun otat uuden muuttujan käyttöön, annat usein sille heti jonkun arvon, esim.

      int martinIkä;
      martinIkä = 15;
    

Laiskoille ohjelmoijille on annettu mahdollisuus säästää naputtelua ja yhdistää nuo vaiheet. Seuraava lause suorittaa täsmälleen saman asian:

      int martinIkä = 15;
    

Itse asiassa tämä on hyvin selkeä tapa ja sitä kannattaa käyttää aina, kun muuttujan esittelyä seuraa heti sijoitus.


Esimerkkiohjelma

Seuraavassa ohjelmassa on koottu edelliset sijoituslauseet kokonaiseen ohjelmaan.

      public class Sijoitus {
        public static void main(String args[]){
          int martinikä, keijonIkä;
          double keskiarvo;
          char luokka;
          String nimi;
      
          nimi = "Keijo Keskiverto";
          luokka = 'B';
          keskiarvo = 8.5;
          martinIkä = 15;
          keijonIkä = martinIkä;
      
        
          System.out.println(nimi);    
          System.out.println(luokka);    
          System.out.println(keskiarvo);    
          System.out.println(keijonIkä);
          System.out.println(martinIkä);
        }
      }
    

Arvaat varmaan, että suoritettuna ohjelma tulostaa ruudulle:

      Keijo Keskiverto
      B
      8.5
      15
      15