![]() |
Javan kieliopin perusteet |
Javan kielioppi noudattelee hyvin pitkälti C- ja C++ -kielten kielioppia. Seuraavaksi tutustumme Javan kieliopin perusteisiin.
Kommentit:
Java-kielessä kommentit merkitään C-kielen tapaan:
| /* kommentti joka voi olla useammalla rivillä */ // Tällainen voisi olla yhden rivin kommentti |
Koottu lause:
Useampi Java-kielen lause voidaan yhdistää yhdeksi lauseeksi ns. kootun lauseen avulla, joka merkitään C-kielen tavoin aaltosulkeilla:
| { lause 1; lause 2; lause 3; } |
Tietotyypit ja muuttujat:
Java-kielessä on sekä yksinkertaisia tietotyyppejä että monimutkaisempia rakenteisia tietotyyppejä (esim. olioluokat).
Javan yksinkertaiset perustietotyypit ovat:
Kokonaislukutyypit:
| byte | 8 bittiä | (etumerkillinen) |
| short | 16 bittiä | (etumerkillinen) |
| int | 32 bittiä | (etumerkillinen) |
| long | 64 bittiä | (etumerkillinen) |
Liukulukutyypit (reaaliluvut):
| float | 32 bittiä |
| double | 64 bittiä |
Totuusarvotyyppi:
| boolean (true/false) |
Merkki- ja merkkijonotyypit:
| char 16 bittiä (koska käyttää 16-bitin UNICODE-merkistöä) |
Merkkijonot ovat erikoisolioita, jotka määritellään oman olioluokan avulla. Tähän palataan hieman myöhemmin.
Seuraava esimerkki havainnollistaa perustietotyyppien käyttöä:



Hyvin näyttäisi toimivan.
Muutama sana tyyppimuunnoksista:
Java-ohjelmoinnissa tyyppimuunnoksia tarvitaan usein.
Esimerkiksi seuraavassa sijoitamme double-tyypin muuttujan int-tyypin muuttujaan.



Lukujärjestelmistä:
Java-kielessä on käytettävissä kolme lukujärjestelmää. Järjestelmät ovat kymmenjärjestelmä, kuusitoistajärjestelmä ja kahdeksanjärjestelmä. Oletuslukujärjestelmänä on kymmenjärjestelmä.
Seuraavassa esimerkki järjestelmien käytöstä:
| 100 | (kymmenjärjestelmä) |
| 0x100 | (kuusitoistajärjestelmä) |
| 0100 | (kahdeksanjärjestelmä) |
Rakenteiset tietotyypit:
Merkkijonotyyppi:
Merkkijono voi sisältää mitä tahansa merkkejä ja se alkaa sekä päättyy lainausmerkkeihin.
Merkkijonoon voidaan lisäksi sisällyttää C-kielen tavoin /-merkin avulla erikoismerkkejä, kuten tabulaattori tai rivinvaihto.
Jos merkkijonoon sisällytetään pelkkä kenoviiva, se kirjoitetaan kahteen kertaan.
Merkkijonot ovat Java-kielessä JavaScript-kielen tapaan olioita automaattisesti. Merkkijono-olio tarjoaa kaikki tarvittavat ominaisuudet sisältämänsä merkkijonon käsittelemiseksi.
Seuraava esimerkki havainnollistaa merkkijonojen käsittelyä:



String-olion tärkeimmät metodit ovat:
| charAt(int) | Palauttaa parametrinään saamaansa indeksiä vastaavan merkin merkkijonosta. |
| compareTo(String) | Vertaa oliossa olevaa merkkijonoa parametrinä saamaansa merkkojonoon. |
| concat(String) | Liittää parametrinä saamansa merkkijonon oliossa olevan merkkijonon perään (sama kuin +-merkki). |
| length() | Merkkijonon pituus. |
| replace(x,y) | Muuttaa oliossa olevan merkkijonon merkit x merkeiksi y. |
| toCharArray() | Muuttaa merkkijonon merkkitaulukoksi. |
| toLowerCase() | Muuttaa merkkijonon merkit pieniksi. |
| toUpperCase() | Muuttaa merkkijonon merkit isoiksi. |
Taulukkotyyppi:
Java-kielessä taulukko määritellään seuraavan esimerkin mukaisesti:
| //Varataan tilaa 20-alkioiselle
kokonaislukutaulukolle int taulu[] = new int [20]; |
Ensimmäisen alkion indeksi on 0, toisen 1 jne. Mikäli viitataan taulukon ohi, syntyy virhetilanne.
Useampiulotteinen taulukko määritellään vastaavasti seuraavan esimerkin mukaan:
| //Varataan tilaa 5x5
merkkijonotaulukolle String jonotaulu [] [] = new int [5] [5]; |
Eli ulottuvuuksia tulee vain lisää.
Taulukot voidaan myös alustaa määrittelyn yhteydessä.
Seuraava esimerkki havainnollistaa taulukoiden käyttöä:



Operaattorit:
Java-kielestä löytyy lähestulkoon samat operaattorit kuin C-kielestä ja niiden toimintakin on samankaltainen.
Aritmeettiset operaattorit (tutustu myös Math-luokkaan myöhemmin):
| + | yhteenlasku |
| - | vähennyslasku |
| * | kertolasku |
| / | jakolasku |
| % | jakojäännös |
Arvonmuunto-operaattorit:
| ++ | kasvata yhdellä |
| -- | vähennä yhdellä |
| += | lisää luku |
| -= | vähennä luku |
| *= | kerro luku |
| /= | jaa luku |
| Esimerkiksi x += 100; => x = x + 100; |
Vertailuoperaattorit:
| == | yhtäsuuri |
| != | erisuuri |
| > | suurempi kuin |
| < | pienempi kuin |
| <= | pienempi tai yhtäsuuri kuin |
| >= | suurempi tai yhtäsuuri kuin |
Loogiset operaattorit:
| ! | NOT |
| && | AND |
| || | OR |
Operaattoreiden suoritusjärjestys:
| () [] |
| ++ -- ! |
| * / % |
| + - |
| < > <= >= |
| == != |
| && |
| || |
| = += -= *= /= |
(HUOM ! Bittitason operaattoreihin emme tässä yhteydessä tutustu)
Ohjausrakenteet:
Seuraavaksi tutustumme Java-kielen tarjoamiin ohjausrakenteisiin.
IF - lause:
if (ehto 1)
else if (ehto 2)
else if (ehto n)
else
|
Seuraava esimerkki havainnollistaa IF-lauseen käyttöä:



Ehdollien sijoituslause:
Java-kielessä on JavaScript-kielen tavoin myös ehdollinen sijoituslause, joka on muotoa:
| ehto ? lauseke 1 : lauseke 2 |
Jos ehto on tosi, suoritetaan lausekkeen 1 sijoituslause. Jos ehto on epätosi, suoritetaan lausekkeen 2 sijoituslause.
Seuraava esimerkki havainnollistaa edellä mainitun lauseen käyttöä:



Switch-case -lause:
Täman rakenteen (lauseen) avulla voidaan toteuttaa erilaisia monivalintoja, joissa haarautumisvaihtoehtoja on useita.
Seuraava esimerkki havainnollistaa rakenteen käyttöä:



Default-osa voi myöskin puuttua.
Case-haarat täytyy lopettaa Break-lauseella ellei halua, että suoritus jatkuu seuraavasta case-haarasta.
For-lause:
For-lauseen avulla voidaan toteuttaa ns. askeltava toisto. For-lause on muotoa:
| for (muuttuja = alkuarvo ; loppuehto ; muuttujan arvon muuttami- nen) toistettava lause; |
Seuraava esimerkki havainnollistaa For-lauseen käyttöä:



For-lauseen toistoehtoa ei tarvitse välttämättä yhdistää laskuriin, vaan se voi olla mikä tahansa ehtolause.
While-lause:
While-lause on ns. alkuehtoinen toistolause, jossa vasta toiston aikana päätetään toistokertojen lukumäärä. Ehto testataan jokaisen kierroksen alussa.
Rakenteessa pyöritään niin kauan kun ehto on tosi.
While-lauseen muoto on seuraava:
| while (ehto) toistettava lause; |
Seuraava esimerkki havainnollistaa While-lauseen käyttöä:



Do-While -lause:
Do-While-lauseen avulla voidaan toteuttaa loppuehtoinen toisto. Lause on muutoin edellisen While-lauseen kaltainen, mutta ehto testataan vasta kunkin kierroksen lopussa.
Lause on muotoa:
| do lause 1; ... lause n while (ehto); |
Lauseessa pyöritään niin kauan kun ehto on tosi.
Seuraava esimerkki havainnollistaa lauseen käyttöä:



Break ja Continue:
Break- ja Continue-sanat toimivat aivan kuten JavaScript-kielenkin yhteydessä.
Avainsanalla Break voidaan jonkin ohjelmalohkon suoritus keskeyttää. Tällöin ohjelman suoritus jatkuu ohjelmalohkoa seuraavasta lauseesta.
Avainsanalla Continue puolestaan keskeytetään jonkin ohjelmalohkon senhetkinen suoritus ja palataan ohjelmalohkon alkuun.
Return:
Return-lauseella voidaan C- ja JavaScript-kielen tavoin määritellä funktion palauttama arvo. Tähän lauseeseen tutustumme myöhemmin.
Harjoituksia:
| 1. | Kokeile tämän kappaleen esimerkkejä ja muuntele niitä mielesi mukaan. |