Helsingin yliopisto / Tietojenkäsittelytieteen laitos / 581258-1 Johdatus ohjelmointiin
Copyright © 1998 Arto Wikla. Tämän oppimateriaalin käyttö on sallittu vain yksityishenkilöille opiskelutarkoituksissa. Materiaalin käyttö muihin tarkoituksiin, kuten kaupallisilla tai muilla kursseilla, on kielletty.

3.2 Alkeistyyppejä ja literaalivakioita

(Muutettu viimeksi 27.2.1998)

Javassa tyypit jaetaan

Tässä kappaleessa käsitellään alkeistyyppejä. Viittaustyyppisiä arvoja eli olioita käsitellään luvuissa 2.6 ja 4.

Kaikkia tyyppejä voi tuttujen tyyppien tapaan käyttää muuttujien määrittelemisessä, muodollisen parametrin tyypinä, metodin tyyppinä, ...

Literaalivakioilla tarkoitetaan ohjelmatekstiin kirjoitettuja vakioita, esim. 1, 3.14, true, ..., joilla ei ole nimeä. Ne siis ymmärretään "kirjaimellisesti".

Nimetyt vakiot ovat "muuttujia, jotka on määritelty muuttumattomiksi", esimerkiksi

   final int VAKIOLUKU = 12345;
Nimettyjä vakiota käsitellään luvussa 4.2.

Totuusarvotyyppi boolean

Arvoalue (ja literaalivakiot): true, false

Huom: Javassa boolean ei ole kokonaisluku eikä kokonaisluku ole boolean (lukuarvon voi muuttaa totuusarvoksi esim. vertailulla x!=0).

Kokonaislukutyypit

Kokonaislukuarvot (paitsi char) esitetään tietokoneessa ns. 2-komplementtimuodossa. Laskutoimitusten mahdollisesti aiheuttamaa ns. ylivuotoa tai alivuotoa ei havaita! Literaalivakiot kirjoitetaan tuttuun tapaan: 1, -54, 0, ...

[Ns. oktaali- ja heksadesimaaliarvoille on oma esitysmuotonsa. On paras olla käyttämättä 'tarpeettomia' etunollia, jos ei erityisesti pidä oktaaliluvuista! Myös long-vakioille on oma esitysmuotonsa: 34L]

Erityyppisten kokonaislukuarvojen sekoittaminen ei aina ole ongelmatonta. Luvussa 3.3 opitaan miten kokonaislukutyyppien arvoja voi muuttaa toisikseen.

Merkkityyppi char

Merkkiarvot (char) ovat positiivisia kahden tavun mittaisia kokonaislukuja. Merkit on koodattu Unicode-koodilla, joka sisältää maailman useimpien kirjoitusjärjestelmien kirjain- ja numeromerkit: mm. kreikka, kopti, venäjä, heprea, arabia, devanagari, bengali, gurmukhi, gujarati, tamili, telegu, tai, lao, hiragana, katakana, ...

Merkkivakiot esitetään yksinkertaisissa lainausmerkeissä, esimerkiksi: 'A', 'k', ' ', ';', '#', ... . (Kaksoislainausmerkit on varattu String-tyyppisille vakioille!)

Eräille erikoismerkeille on erityiset ilmaukset:

          '\b'     backspace 
          '\t'     tabulaattori (tab)
          '\n'     rivinvaihto (lf)
          '\f'     sivunvaihto (ff)
          '\r'     telanpalautus (cr)
          '\"'     kaksinkertainen lainausmerkki
          '\''     yksinkertainen lainausmerkki
          '\\'     takakenoviiva
          '\ddd'   merkki, jonka koodi oktaalilukuna on ddd
          '\udddd' Unicode-merkki, jonka koodi hekdadesimaali-
                   lukuna on dddd 
Huom: Näitä ilmauksia voi käyttää myös String-vakioissa!

Liukulukutyypit

Javan liukulukutyypit ovat: Liukulukuvakiot ovat muotoa: 3.14, 124., .12, 5.6e3, 0.3E-9, 3e-10, 1.8e+3, ...

Huom: Kaikki liukulukuvakiot ovat oletusarvoisesti tyyppiä double! Vakion saa float-tyyppiseksi kirjoittamalla sen loppuun kirjaimen f tai F: 3.14f, 124.F, .12F, 5.6e3f, 0.3E-9f, ...

(Javan liukulukuaritmetiikka (lähes!) noudattaa standardia IEEE 754.)

(Liukulukujen arvoalueeseen kuuluvat myös positiivinen ja negatiivinen ääretön ja erityinen NaN-arvo, "not a number". Näiden avulla pidetään mm. huoli siitä, että alilausekkeen laskennassa tullut 'huono' arvo tekee koko lausekkeen arvon 'huonoksi'. Tällä kurssilla ei numeerisen laskennan hienouksia kuitenkaan käsitellä!)


Takaisin luvun 3 sisällysluetteloon.