Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1
Tunnus Java tunnus Java-kirjain Java-numero 2
Tunnus jatkuu.. Java-kirjain { a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, å, ä, ö, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, Å, Ä, Ö, $, _ } Java-numero { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } Esim. int tama_on_java_tunnus8; 3
Varattu sana Varatuilla sanoilla ilmaistaan ohjelmointikielen toimenpiteitä eli lauseita ja muita rakenteita. Javan varattuja sanoja ovat mm. if, while, break, for, true, false, null, jne 4
Kommentti Kommentit (selitteet, huomautukset) ovat ohjelmatekstiin kirjoitettuja selityksiä. Ne eivät vaikuta ohjelman toimintaan. Kommenttien tarkoitus on auttaa ohjelmoijaa ja ohjelman ylläpitäjää ymmärtämään ohjelman rakennetta ja toimintaa. 5
Kommentti jatkuu Javassa kommenttien ilmaisemiseen on kaksi tapaa: // Tässä on yhden rivin kommentti /* Tämä kommentti puolestaan jatkuu ja jatkuu,...,., kunnes tulee vastaan merkkiyhdistelmä: */ 6
Muuttuja (5.4.1) Muuttuja on ohjelman varaama muistipaikka, johon voidaan tallentaa yksittäisiä tietoja. Muuttujalle annetaan nimi ja tietotyyppi, joka kertoo millaista tietoa voi tallentaa ko. muuttujaan eli muistipaikkaan. Muuttuja on määriteltävä ohjelmassa ennen kuin sitä voi käyttää. 7
Muuttujan määrittely (5.4.1) Yksi muuttuja, syntaksi: tai tietotyyppi tietotyyppi muuttujan_nimi; muuttujan_nimi = alkuarvo; Monta muuttujaa, joiden tyyppi on sama, syntaksi: tietotyyppi tai tietotyyppi muuttujan_nimi, muuttujan_nimi2, muuttujan_nimi3; muuttujan_nimi = alkuarvo, muuttujan_nimi2, muuttujan_nimi3 = alkuarvo; 8
tietotyyppi muuttujan_nimi ; Muuttujan nimi noudattaa Javan tunnusstandardia Käytämme nimistandardia, jossa muuttujan nimi alkaa aina pienellä alkukirjaimella. yhdistelmänimien jälkiosat alkavat isolla alkukirjaimella. Esim. int lkm; boolean rivilöytyi; 9
tietotyyppi muuttujan_nimi; // alkeistietotyypit Muuttujan tietotyyppi ilmaisee, minkä tyyppistä tietoa voidaan sijoittaa muuttujaan Kokonaisluvut: byte, arvoalue: -128 127 ( 8 bittiä) short, arvoalue: -32 768 32 767 (16 bittiä) int, arvoalue: -2 147 483 648 2 147 483 647 (32 bittiä) long, arvoalue: -9 223 372 036 854 775 808 9 23 372 036 854 775 807 (64 bittiä) Desimaaliluvut: double arvoalue: -1.79769 *10 308 1.79769 *10 308 (64 bittiä) float arvoalue: -3.4028234*10 38 3.4028234*10 38 (32 bittiä) 10
tietotyyppi muuttujan_nimi; // alkeistietotyypit jatkuu Totuusarvo: boolean Yksi merkki: char true tai false yksi merkki (16 bittiä) Esim. boolean löytyi = false; char merkki = K ; int luku = 34; double dluku = 45.67; 11
tietotyyppi muuttujan_nimi; //viittaustyypit Javan alkeistietotyyppeihin ei kuulu merkkijono-tyyppiä, mutta kieleen on tehty merkkijono-luokka String String-tyyppinen muuttuja on ns. viittausmuuttuja, eli muuttujan arvo on viittaus olioon ( eli muuttujan arvo on String-olion muistipaikan numero) Esim. String kaupunki = Helsinki ; String nimi = Mika Waltari ; kaupunki: Helsinki nmi: Mika Waltari 12
tietotyyppi muuttujan_nimi = alkuarvo; Kun muuttuja määritellään, se voi saada myös ensimmäisen arvonsa eli alkuarvon. Alkuarvon on oltava samaa tyyppiä kuin muuttujan tyyppi. Alkuarvo voi olla: literaalivakio, nimetty vakio, lauseke, jolloin lausekkeen arvo ratkaistaan ja sijoitetaan muuttujan arvoksi alkuarvon saanut muuttuja 13 Ohjelmointi - Kai Kivimäki, Seija Lahtinen
tietotyyppi muuttujan_nimi = alkuarvo; jatkuu Esim. int luku1 = 2; luku1: 2 int luku2 = 4; luku2: int summa = luku1 + luku2; 4 summa: 6 int tulos = (3 + luku2) * 7 23; tulos: 26 String mjono = Libretto + + Cavaletto ; mjono: Libretto Cavaletto 14
Tietotyyppi muuttujan_nimi = alkuarvo; //Literaalivakio Literaalivakiolla tarkoitetaan ohjelmatekstiin kirjoitettua vakiota, esim. 3.14, true, L, Koira, Hello world,..., jolla ei ole nimeä Vakion perään voidaan kirjoittaa tietty kirjan, jolloin vakion tietotyyppi määrätään Esim. long luku = 99999999945L; 15
Tietotyyppi muuttujan_nimi = alkuarvo; //Literaalivakio jatkuu literaalivakio tietotyyppi 12 Kokonaisluku, int 12L tai 12l Kokonaisluku, long 12.6 Desimaaliluku, double 12.6F tai 12.6f Desimaaliluku, float true Totuusarvo, boolean false Totuusarvo, boolean k Merkki, char K Merkkijono, String kissa Merkkijono, String 16
Tietotyyppi muuttujan_nimi = alkuarvo; // Nimetty vakio Nimetty vakio on muuttuja, jonka arvo annetaan muuttujan määrittelyn yhteydessä, eikä arvoa voi enää muuttaa ohjelman aikana. Syntaksi: final tietotyyppi MUUTTUJAN_NIMI = arvo; Nimistandardin mukaan vakio kirjoitetaan suurin kirjaimin. Esim. final double PII = 3.14; final int VAKIOLUKU= 12345; final double R = 7.8; double sade = R; 17
Tietotyyppi muuttujan_nimi = alkuarvo; //lauseke Lauseke muodostuu operandeista ja operaattoreista. Lausekkeen operandit voivat olla vakioita, muuttujia, metodikutsuja, jne. Lausekkeen arvon tyyppi riippuu operandien tyypeistä, eli jos lausekkeessa on yksikin desimaalityyppinen arvo, lausekkeen tyyppi on desimaalinen. Lausekkeen arvon laskemisen järjestystä voidaan vaihtaa sulkeiden avulla. 18
Tietotyyppi muuttujan_nimi = alkuarvo; //lauseke jatkuu Aritmeettiset operaattorit: + yhteenlasku - vähennyslasku * kertolasku / jakolasku tai kokonaisjako, kun operandit ovat kokonaislukutyyppiä % jakojäännös, toimii vain operandeilla, jotka ovat kokonaislukutyyppiä 19
Tietotyyppi muuttujan_nimi = alkuarvo; //lauseke jatkuu Esim. int osamaara = 34 / 3; int jakojaannos = 34 % 3; double osa = 55 / 7; double osa2 = 55.0 / 7; osamaara: 11 jakojaannos: 1 osa: 7.0 osa: 7.8571428 int a = 45 + 89 * 0 34; a: 11 double b = 3.4 * (4 + 5); b: 30.6 20
Tietotyyppi muuttujan_nimi = alkuarvo; //lauseke jatkuu Vertailuoperaattorit: == yhtäsuuri kuin <= pienempi ta yhtäsuuri kuin >= suurempi tai yhtäsuuri kuin < pienempi kuin > suurempi kuin!= eirsuuri kuin Vertailulausekkeen arvo on totuusarvo eli true tai false 21
Tietotyyppi muuttujan_nimi = alkuarvo; //lauseke jatkuu Esim. int luku1 = 7, luku2 = 8; luku1: luku2: 7 8 boolean samat = luku1 == luku2; samat: false boolean erit = luku1!= luku2; erit: true Ohjelmointi - Kai Kivimäki, Seija Lahtinen 22
Loogiset operaattorit: && ja tai! ei Tietotyyppi muuttujan_nimi = alkuarvo; //lauseke jatkuu Käytetään vain vertailulausekkeiden yhteydessä Operaation tulos on looginen arvo true tai false Esim. int vuosi= 2004; boolean karkausvuosi = (vuosi % 400 == 0 ) (vuosi % 4 == 0 && vuosi % 100!= 0); Karkausvuosi: true 23
tietotyyppi muuttujan_nimi = alkuarvo; // alkuarvon saanut muuttuja Jos muuttujat ovat samaa tietotyyppiä tai vähemmän tilaa vievän muuttujan arvo sijoitetaan enemmän tilaa vievään muuttujaan, järjestelmä tekee tyyppimuunnoksen itse. Esim. int a = 78; int b = a; double d = a; a: 78 b: 78 d: 78.0 double float long int short char byte char merkki = k ; int koodi = merkki; merkki: k koodi: 107 24
tietotyyppi muuttujan_nimi = alkuarvo; // alkuarvon saanut muuttuja jatkuu Sijoitettavan tiedon arvosta voi pudota tietoa, kun sijoitus tehdään eri tyyppiseen muuttujaan. Tässä tilanteessa tarvitaan pakotettu tyyppimuunnos Syntaksi: (uusi tyyppi) muuttuja Esim. int a = 89; short b = (short) a; a: 89 b: 89 double c = 89.89; int d = (int) c; c: 89.89 d: 89 25
Muuttujan määrittely esimerkki public class EsimerkkiOhjelma { public void aja(){ // muuttujien määrittelyt // muuttujien arvoiksi literaalivakiot int luku = 23; long luku1 = 56789999L; double dluku = 4.5; boolean ok = true; // nimettyjen vakioiden määrittely final int VAKIO = 67; final double PII = 3.14; // muuttujien arvoiksi nimetyt vakiot int sade = VAKIO; double pii = PII; 26
Muuttujan määrittely esimerkki jatkuu // muuttujien arvoiksi lausekkeet int luku2 = luku*vakio-5 + luku/vakio+3; double ympyranala = sade*sade*pii; boolean totuus = luku1 < luku2; // muuttujien arvoiksi alkuarvon saaneet muuttujat double dluku1 = luku; // tyyppimuunnos int luku3 = (int)dluku; } // end of aja() public static void main(string[] args) { EsimerkkiOhjelma e = new EsimerkkiOhjelma(); e.aja(); } // end of main } // end of class 27
Muuttujat ja niiden näkyvyys (5.4.1) Muuttuja määritellään lohkossa, jossa sitä käytetään Muuttujaa voidaan käyttää ko. lohkossa ja myös lohkon sisäkkäisissä lohkoissa. Lohko alkaa { ja päättyy }. public void aja() { // muuttujien määrittely int luku1 = 4; int luku2 = luku1; double dluku1 = 6.7; double dluku2 = dluku1 + luku1+luku2;... } 28
Tiedon merkkipohjainen tulostaminen Tulostuslause: println System.out. ( lauseke ) print + ; Tulostuslauseen päättää aina puolipiste. Tulostettavan lausekkeen arvo ratkaistaan ja se tulostetaan merkkimuotoisena kuvaruudulle. 29
Tiedon merkkipohjainen tulostaminen jatkuu System.out.print ( ); ei tee rivinvaihtoa kirjoittamisen jälkeen seuraava tulostus tulostuu samalle riville edellisen perään. System.out.println ( ); tekee rivinvaihdon kirjoittamisen jälkeen seuraava tulostus tulostuu uuden rivin alkuun. 30
Tiedon merkkipohjainen tulostaminen jatkuu a) jokaiselle lausekkeelle oma tulostuslause Esim. double pituus = 172.5; System.out.print ( Pituutesi on ); System.out.print (pituus); System.out.println ( m ); tulostuu: Pituutesi on 172.5 m b) yksi tulostuslause, välimerkkinä + -merkki Esim. double pituus = 172.5; System.out.println ( Pituutesi on +pituus + m ); tulostuu: Pituutesi on 172.5 m 31
Tiedon merkkipohjainen tulostaminen jatkuu Tyhjän rivin tulostaminen: System.out.println ( ); // mikäli edellinen tulostuslause on // vaihtanut riviä System.out.println ( ); // mikäli edellinen tulostuslause ei System.out.println ( ); //vaihda riviä System.out.print ( \n ); // tulostetaan rivinvaihtomerkki 32
public class EsimerkkiOhjelmaB { Muuttujat ja tulostus esimerkki public void aja() { int luku = 23; double dluku = 45.67; final double PII = 3.14; boolean ok = luku < dluku; // tulostus / yksi lauseke System.out.print("luku = "); System.out.println(luku); // tulostuu: luku = 23 System.out.print("dluku = "); System.out.println(dluku); // tulostuu: dluku = 45.67 33
Muuttujat ja tulostus esimerkki jatkuu // tulostus / monta lausetta System.out.println("vakio PII = " + PII + "\nok = " + ok); // tulostuu: vakio PII = 3.14 // ok = true } public static void main(string[] args) { EsimerkkiOhjelmaB e = new EsimerkkiOhjelmaB(); e.aja(); } } 34