Ohjelmamme poikkeaa aikaisemmista esimerkeistä siinä, että nyt ohjelman sisällä tarvitaan muuttuvaa tietoa: matka millimetreinä. Tällaiset muuttuvat tiedot talletetaan ohjelmointikielissä muuttujiin. Muuttuja on koneen muistialueesta varattu tarvittavan kokoinen "muistimöhkäle", johon viitataan käytännössä muuttujan nimellä.
Kone viittaa muistipaikkaan muistipaikan osoitteella. Kääntäjäohjelman tehtävä on muuttaa muuttujien nimiä muistipaikkojen osoitteiksi. Kääntäjälle täytyy kuitenkin kertoa aluksi minkä kokoisia 'möhkäleitä' halutaan käyttää. Esimerkiksi kokonaisluku voidaan tallettaa pienempään tilaan kuin reaaliluku. Mikäli haluaisimme varata vaikkapa muuttujan, jonka nimi olisi matka_mm kokonaisluvuksi, kirjoittaisimme seuraavan Java-kielisen lauseen (muuttujan esittely):
int matka_mm; // yksinkertaisen tarkkuuden kokonaisluku
Pascal - kielen osaajille huomautettakoon, että Pascalissahan esittely oli päinvastoin:
VAR matka_mm: INTEGER;
Tulos, eli matka kilometreinä voitaisiin laskea muuttujaan matka_km. Tämän muuttujan on kuitenkin oltava reaalilukutyyppinen (ks. esimerkkiajo), koska tulos voi sisältää myös desimaaliosan:
double matka_km; // kaksinkertaisen tarkkuuden reaaliluku
On olemassa myös yksinkertaisen tarkkuuden reaaliluku float, mutta emme tarvitse sitä tällä kurssilla. Samoin kokonaisluvusta voidaan tehdä "tosi lyhyt", "lyhyt" tai "kaksi kertaa isompi":
int matka_km; short sormia; // max 32767 byte varpaita; // max 127 long valtion_velka_Mmk; // Tarvitaan ISO arvoalue
Muuttujan määritys voisi olla myös
volatile static long sadasosia;
Tulemme kuitenkin aluksi varsin pitkään toimeen pelkästään seuraavilla perustyypeillä:
short - kokonaisluvut - 32 768 - 32 767, 16-bit int - kokonaisluvut -2 147 483 648 - 2 147 483 647, 32-bit double - reaaliluvut n. 15 desim. - > 1.7e308 char - kirjaimet 16 bit Unicode boolean - true tai false
Katso lisää Javan tietotyypeistä linkistä:
http://java.sun.com/docs/books/tutorial/java/nutsandbolts/datatypes.html