©Internetix


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öä:

Esim2

Hyvin näyttäisi toimivan.

Muutama sana tyyppimuunnoksista:

Java-ohjelmoinnissa tyyppimuunnoksia tarvitaan usein.

Esimerkiksi seuraavassa sijoitamme double-tyypin muuttujan int-tyypin muuttujaan.

Esim3

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ä:

Esim4

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öä:

Esim5

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)

lause 1;

else if (ehto 2)

lause 2;

else if (ehto n)

lause n;

else

lause n+1;

Seuraava esimerkki havainnollistaa IF-lauseen käyttöä:

Esim6

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öä:

Esim7

Switch-case -lause:

Täman rakenteen (lauseen) avulla voidaan toteuttaa erilaisia monivalintoja, joissa haarautumisvaihtoehtoja on useita.

Seuraava esimerkki havainnollistaa rakenteen käyttöä:

Esim8

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öä:

Esim9

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öä:

Esim10

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öä:

Esim11

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.

ŠInternetix/Java-ohjelmointi/Jukka Selin 1999