Käyttäjän työkalut

Sivuston työkalut


java:tietotyypit

Javan tietotyypit

Jokaisella muuttujalla on oma tietotyyppinsä. Erityyppisiä muuttujia ei voi (yleensä) yhdistää samaan laskuun.

Muuttujien tyypit ja arvoalueet

tyyppi arvolaji oletusarvo tilantarve arvoalue
boolean true tai false false yksi bitti true, false
char Unicode-merkki \u0000 16 bittiä \u0000…\uFFFF
byte etumerkillinen kokonaisluku 0 8 bittiä -128…127
short etumerkillinen kokonaisluku 0 16 bittiä -32768…32767
int etumerkillinen kokonaisluku 0 32 bittiä -2147483648…2147483647
long etumerkillinen kokonaisluku 0 64 bittiä -9223372036854775808 … 9223372036854775807
float IEEE-754 -muotoinen desimaaliluku 0.0 32 bittiä +/- 1,4E-45…+/- 3,4E38
double IEEE-754 -muotoinen desimaaliluku 0.0 64 bittiä +/-4,9E-324…+/-1,8E308

Lisäksi käytössä tyyppi String. Yleensä desimaaliluvuista käytetään tyyppiä double ja kokonaisluvuista tyyppiä int.

Java-kielen varatut sanat

abstract, boolean, break, byte, byvalue, case, catch, char, class, const, default, do, double, else, extends, false, final, finally, float, for, goto, if, implements, import, instanceof, int, interface, long, native, new, null, package, private, protected, public, return, short, static, super, switch, synchoronized, this, threadsafe, throw, transient, true, try, void, while ja continue.

Muuttujien esittely

Javassa muuttujat esitellään (yleensä) public static void main(String[ ] args) -litanian jälkeen. Muuttujat esitellään kertomalla ensin muuttujan tyyppi ja sen jälkeen muuttujan nimi. Muuttujalle olisi hyvä antaa alkuarvo heti esittelyn yhteydessä. Hyvä ohjelmoija esittelee kaikki ohjelmassa käytettävät muuttujat ohjelman alussa (poikkeuksen muodostavat for-silmukat, joihin palataan myöhemmin).

Muuttujan nimi voi olla mikä muu tahansa kuin varattu sana, mutta se ei voi alkaa numerolla. Nimessä voi olla alaviiva _ ja nimen keskellä ja lopussa voi olla numero. Myös ääkkösiä voi käyttää. Muuttujan nimeksi kannattaa antaa jokin kuvaava nimi. Hyvän ohjelmointitavan mukaisesti muuttujan nimet alkavat pienellä kirjaimella. Kuten englannissa, javassa desimaalierotin on piste.

Esimerkki muuttujien esittelystä:

class Muuttuja
{
        public static void main(String[ ] args)
        {
          int luku = 0;
          double toinen_luku;
          char merkki = 'M', toinen_merkki = 'K';
          byte pieni_luku;
        }
}

Tietotyyppi kertoo, millaista tietoa muuttuja voi sisältää. luku-muuttuja voi sisältää kokonaislukuja, joten sille ei voi antaa arvoksi vaikkapa sanaa ”paloauto”. Muuttuja toinen_luku voi saada arvokseen desimaalilukuja (desimaaliluvun tunnistaa desimaalipisteestä). char tyyppiset muuttujat voivat saada arvokseen yhden merkin.

Laskutoimitukset

Laskutoimitukset ovat kuten taulukkolaskennassakin, eli

Laskutoimitus Operaattori
Yhteenlasku +
Vähennyslasku -
Kertolasku *
Jakolasku /

Laskutoimituksissa on oltava tarkkana, että muuttujien arvoalueet riittävät. Lisäksi on pidettävä huoli, että laskutoimitus pysyy oikeassa tietotyypissä. Esimerkiksi jaettaessa kokonaislukuja tulos ei välttämättä ole kokonaisluku.

Ohjelmoinnissa = ei tarkoita samaa kuin matematiikassa, vaan ohjelmoinnissa = merkki tarkoittaa sijoitusta. Muuttujan arvoksi tulee sama, kuin mitä = merkin oikealla puolella on.

Esimerkkejä Talletetaan kertolaskun 5*10 tulos muuttujaan tulos:

tulos = 5 * 10;

Talletetaan jakolaskun 10/2 tulos muuttujaan osamaara:

osamaara = 10 / 2;

Annetaan muuttujan isompi arvoksi pienempi+5:

isompi = pienempi + 5;

Annetaan muuttujan isompi uudeksi arvoksi isompi+5 (eli kasvatetaan muuttujan arvoa viidellä):

isompi = isompi + 5;

tai

isompi += 5;

Täten vaikkapa

luku *= 10 + 5;

tarkoittaa

luku = luku*10 + 5;

Tulostetaan muuttujan isompi arvo:

System.out.print(isompi);

Muuttujan arvon kasvattaminen yhdellä:

arvo = arvo + 1;

tai

arvo++;

tai

arvo+=1;

Yhdellä pienentäminen käy vastaavasti.

Kokonaisluvut

Javan kokonaislukumuuttujien tyypit ovat byte, short tai int.

Kokonaislukujen summa, erotus ja tulo ovat aina kokonaislukuja, mutta osamäärä (eli jakolaskun tulos) ei ole aina välttämättä kokonaisluku. Esimerkiksi 1/3 on 0.3333…

Desimaaliluvut

Desimaalimuuttujien tyypit ovat joko float tai double.

Merkkijonot

Merkkijonojen tyyppi on joko char tai String.

char tyyppinen muuttuja voi olla vain yhden merkin mittainen, kun taas String voi olla pitempikin sana.

Totuusarvot

Totuusarvomuuttujan tyyppi on boolean. Tämän tyyppinen muuttuja voi olla suoraan ehtolausekkeen ehtona, katso ehtolauseke.

Tietotyypin muuttaminen

Koska erityyppisillä muuttujilla ei voida laskea, niin muuttujien tietotyyppiä pitää muuttaa laskun ajaksi. Lisäksi laskujen tulokset voivat valehdella.

Esimerkiksi alla oleva ohjelma laskee jakolaskun 2/3, mutta tulos on väärä. Miksi?

class Jakolasku
{
        public static void main(String[] args)
        {
          System.out.println("Jakolaskun tulos on "+(2/3));
        }
}

Koska kokonaisluku 2 jaetaan kokonaisluvulla 3, niin tuloksena on aina kokonaisluku 0. Pyöristys ei tapahdu oikein!

Tyyppimuunokset

Jakolaskun tulos saadaan oikeaksi käyttämällä laskussa kokonaislukujen sijalta desimaalilukuja. Eräs korjaustapa olisi

class Jakolasku
{
        public static void main(String[] args)
        {
          System.out.println("Jakolaskun tulos on "+(2.0/3.0));
        }
}

Nyt jakolaskussa on kaksi double-tyyppistä desimaalilukua, joten tuloskin on desimaaliluku.

Toinen (parempi) keino on käyttää tyyppimuunnosta. Kirjoitetaan luvun (tai muuttujan eteen) suluissa se tietotyyppi, mitä laskussa halutaan käyttää. Tämän jälkeen kyseisessä laskussa tietotyyppi on se. Laskun jälkeen muuttujan tietotyyppi palaa ennalleen.

class Jakolasku
{
        public static void main(String[] args)
        {
          System.out.println("Jakolaskun tulos on "+((double)2/(double)3));
        }
}

Tämä on ainoa keino muuttaa muuttujan tietotyyppiä kesken ohjelman suorituksen.

class Jakolasku
{
        public static void main(String[] args)
        {
          int muuttuja1=2, muuttuja2=3;
          System.out.println("Jakolaskun tulos on "
               +((double)muuttuja1/(double)muuttuja2));
        }
}

String-tyyppisen tiedon muuttaminen kokonais- tai desimaaliluvuksi

Kun halutaan muuttaa String tyyppistä tietoa joko kokonaisluvuksi tai desimaaliluvuksi, niin se tapahtuu litanialla:

Integer.parseInt(syote) kokonaisluvuksi

Double.parseDouble(syote) desimaaliluvuksi

Yleensä muutettu luku talletetaan johonkin sopivaan muuttujaan, esimerkiksi

arvaus=Integer.parseInt(syote);

Tehtavia

java/tietotyypit.txt · Viimeksi muutettu: 2015/08/13 16:36 / 127.0.0.1