Arvonmuutosoperaattoreilla on tarkoitus nopealla suorituksella muuttaa luvun arvoa yhdellä, ottaa luvusta vastaluku (keroo -1:llä) tai kertoa/jakaa luku toisella luvulla. Opetteluvaiheessa kannattaa jättää arvonmuutosoperaattorit merkitsemättä ja korvata ne selväkielisellä sijoituslauseella. Arvonmuutosoperaattoreilla on monesti koodia nopeuttava mutta lukemista sotkeva vaikutus.
Arvonmuutosoperaattorit ovat
Operaattori | Merkitys | Esimerkki | Selvennys |
++ | lisää yksi | i ++ | i=i+1 |
-- | vähennä yksi | i-- | i=i-1 |
+= | lisää luku | a+=256 | a=a+256 |
-= | vähennä luku | a-=15 | a=a-15 |
*= | kerro luku | r*=3 | r=r*3 |
/= | jaa luku | r/=4 | r=r/4 |
Olkoot x=5. Sijoitus y=x++ aiheuttaa sen, että y saa x:n arvon ja lisää siihen yhden. Tulokseksi saadaan x=6 ja y=5. Sen sijaan y=++x aiheuttaa sen, että ensin x:n arvoa lisätään yhdellä ja sitten y saa x:n arvon. Siis (jos x oli alun perin 5) x=6 ja y=6. Huomaat eron!
Esimerkki 12b
import Lue;
public class e12b
{ // kokeillaan a++ ja ++a operaatiooiden eroa
public static void main(String args[])
{
int a=0,b;
System.out.println("Anna kokonaisluku");
a = Lue.kluku();
b = a++;
System.out.println("a++ jalkeen a = "+a+" b = "+b);
b = ++a;
System.out.println("++a jalkeen a = "+a+" b = "+b);
}
}
Vertailuoperaattoreita tarvitaan silloin, kun muuttujia joudutaan vertaamaan toisiinsa. Vertailuoperaattorit ovat
Operaattori | Merkitys | Esimerkki |
== | yhtäsuuruus | i==5 |
!= | erisuuruus | s!="Moikka" |
> | suurempi kuin | x>100.0 |
< | pienempi kuin | |
>= | suurempi tai yhtäsuuri | |
<= | pienempi tai yhtäsuuri |
Loogisia operaattoreita käytetään erilaisten vertailujen yhdistelemiseen niitä tarvitaan toistorakenteissa ja niihin palataan siinä yhteydessä. Nyt kuitenkin pelkästään listataan loogiset operaattorit. Ne ovat
Operaattori | Merkitys | Esimerkki |
! | Ei –operaattori | !(a>3) |
&& | Ja –operaattori | (paiva=="Ma" && kk=="Toukokuu") |
|| | Tai operaattori | (paiva=="Ma" || paiva=="To") |
Esimerkiksi haluttaessa testata muuttujan i arvoa, onko se lukujen 127 ja 217 välissä, tehtäisiin se seuraavasti
(i>127 && i<217)
Käytettäessä && ja-operaatiota, missä molempien puolien arvot pitää olla tosi, jotta && olisi tosi, on lauseke epätosi, jos vasen puoli on epätosi. Tällöin oikeaa puolta ei ikinä edes yritetä toteuttaa. (ns. oikosulkurakenne). Mikäli halutaan, että && -operaation molemmat puolet käsitellään kaikissa tapauksissa, voidaan && -operaatio korvata & -operaatiolla. Sama koskee || -operaatiota (siis |, jos haluat luopua oikosulkurakenteesta).
On olemassa myös xor -operaattori, jota merkitään ^:llä. xor tarkoittaa, että A^B on epätosi jos A ja B ovat samanarvoisia (siis jos A==B=false tai A==B=true),. Muulloin A^B on tosi.
Java noudattaa normaaleja matematiikan laskujärjestyksiä eli
– Sulut lasketaan ensin sisäkkäisessä järjestyksessä
– Kerto- ja jakolasku vasemmalta oikealle
– Yhteen- ja vähennyslasku vasemmalta oikealle
Lisäksi metodikutsut selvitetään ennen laskulausekkeen suorittamista.
TARKEMPI suoritusjärjestys löytyy Sunin Java –dokumentaatiosta.
Nyt alammekin olla alkeiden opiskelussa siinä vaiheessa, että voimme siirtyä varsinaiseen ohjelmointiin. Seuraavaksi käsitellään ehtolauseet if sekä if –else ja valintalause switch.
![]() |
Päivä on tiistai ja ei ole elokuu |
![]() |
Saipalla on vierasottelu ja vastustaja on pääkaupunkiseudulla mutta se ei ole Jokerit |
![]() |
luku on jaollinen neljällä mutta ei ole jaollinen 400:lla |
![]() |
x kuuluu reaaliakselin väliin [-2,0] tai [3,100] |
![]() |
Opettajan pitämä tunti on muuta kuin Ranskaa tai sitä ei pidetä Peltolassa |
![]() |
Missi (Mister) on pitkä tai tumma ja ei ole syntynyt tammikuussa |
Vastaukset