next up previous contents index
Next: Operaatioita merkkijonoilla Up: Muuttujat ja sijoituskäsky Previous: Laskutoimituksia kokonais- ja desimaaliluvuille   Sisältö   Hakemisto

Lisää sijoituskäskystä

Tarkastellaan vähän tarkemmin sijoituskäskyä. Sijoituskäskyssä on vasemmalla jonkun muuttujan nimi, sitten =-merkki ja tämän oikealla puolella lauseke, esimerkiksi

double keskiarvo;
keskiarvo = (4.5 + 8.7) / 2.0;
Sijoituskäsky suoritetaan aina niin, että ensin lasketaan oikealla puolella olevan lausekkeen arvo ja saatu tulos sijoitetaan vasemmalla puolella olevan muuttujan arvoksi.

Laskettavassa lausekkeessa voi esiintyä muuttujien nimiä. Tällöin lausekkeen arvoa laskettaessa käytetään näiden muuttujien arvoja, esimerkiksi

int fahrenheit, celsius;
fahrenheit = 100;
celsius = 5 * (fahrenheit - 32) / 9;

Sijoituskäskyn vasemmalla puolella olevalla muuttujalla voi olla arvo jo ennen sijoituskäskyä. Tällöin vanha arvo häviää täysin sijoituskäskyä suoritettaessa, esimerkkiksi

int fahrenheit, celsius;
celsius = 25;
fahrenheit = 100;
celsius = 5 * (fahrenheit - 32) / 9;

Muuttujan celsius arvo on ennen viimeisen käskyn suorittamista 25, mutta sen suorittamisen jälkeen 37.

Muuttujan vanhaa arvoa voidaan käyttää myös hyväksi saman muuttujan uutta arvoa laskettaessa, esimerkiksi

int luku;
luku = 5;
luku = luku + 7;

Jälkimmäinen sijoituskäsky suoritetaan seuraavasti: lasketaan ensin oikealla puolella olevan lausekkeen arvo. Otetaan siis muuttujan luku arvo (5), lisätään siihen 7, jolloin lausekkeen arvoksi saadaan 12. Saatu arvo sijoitetaan muuttujan luku uudeksi arvoksi. Muuttujan luku arvo on siis ennen käskyn suorittamista 5 ja käskyn suorittamisen jälkeen 12. Käsky voi tuntua aluksi hämäävältä, mutta on muistettava, että merkki = tarkoittaa todellakin sijoitusta, eikä sillä ole Java-kielessä mitään tekemistä yhtäsuuruuden kanssa.

Sijoituskäskyt, joissa muuttujan vanhaa arvoa käytetään hyväksi uutta arvoa laskettaessa ovat niin yleisiä, että osalle niistä on sovittu lyhennysmerkintä. Sijoitus

luku += 7;
tarkoittaa samaa kuin sijoituskäsky
luku = luku + 7;

Vastaavasti toimivat merkinnät -=, *= ja /=.

Myös sellaisille sijoituskäskyille, jotka kasvattavat tai vähentävät muuttujan arvoa yhdellä, on lyhennysmerkinnät:

i++;
ja
++i;
merkitsevät samaa kuin
i = i + 1;

Vastaavasti käskyt

i--;
ja
--i;
merkitsevät samaa kuin
i = i - 1;

Merkinnöillä i++ ja ++i (vastaavasti i-- ja --i) ei ole eroa silloin, kun ne esiintyvät käskyssä yksinään. Sen sijaan niiden vaikutukset poikkeavat toisistaan silloin, jos ne esiintyvät suuremman lausekkeen osana. Tästä asiasta esitetään tarkempaa tietoa kurssilla myöhemmin.


next up previous contents index
Next: Operaatioita merkkijonoilla Up: Muuttujat ja sijoituskäsky Previous: Laskutoimituksia kokonais- ja desimaaliluvuille   Sisältö   Hakemisto
Kerttu Pollari-Malmi 2003-01-27