Programmeerimiskeel Java/Primaarsed andmetüübid
//Täisarvud
byte //1 bait'i pisike täisarv -128 ~ 127
short //2 bait'i lühike täisarv -32768 ~ 32767
int //4 bait'i täisarv -2147483648 ~ 2147483647
long //8 bait'i pikk täisarv -9223372036854775808 ~ 9223372036854775807
math.BigInteger//x bait'i konstrueeritav x ~ y
//Murdarvud
float //4 bait'i väike murdarv 2^-126 ~ (2-2^-23)2^127
double //8 bait'i murdarv 2^-1022 ~ (2-2^-52)2^1023
math.BigDecimal//x bait'i konstrueeritav x ~ y
//Muu
void //- bait'i null operaator Pole parameetreid(väärtuseid)
boolean //1/8 bait'i kahendväärtus false ~ true
char //2 bait'i tähtmärk Unicode 0 ~ 65535
String //4 bait-4GB sõne iga element unicode 0 ~ 65535
NB: Lihttüüpidele on märgitud * lõppu. Vahel läheb Javas vaja anda tüüp üle deklareeritud element muutujana, mitte lihtsalt deklareeritud muutujana, selleks on olemas pakend tüübid. NT: Kui kui on: tähemärkmuutuja on tema tüübiks (lihttüüp) char, kui on tähemärkmuutuja element, on tema tüübiks Character klass (meeldetuletuseks, elemendi loomiseks peab kasutama võtmesõna new).
Andmetüübi muutmine (Vermimine)
[muuda]Ahenev
[muuda]Kui lihttüüp aheneb väiksemaks tüübiks on vaja kasutada tüübi vermismist, osas informatsiooni läheb paratamatult kaotsi ja tekkivad vead tuleb kinni püüda.
Laienev
[muuda]Kui lihttüüp laieneb suuremaks tüübiks pole vaja kasutada tüübi vermimist, seda tehakse automaatselt.(Ainus viga mis võib tekkida - pole uue tüübi jaoks mälu eraldada)
Sõneks muutuv
[muuda]Lihttüübid laienevad sõneks juhul kui neid sõnele otsa liita või kui neid selleks vormida.
Täiendavalt
[muuda]Sõne pikkus
[muuda]Kuna sõne iga tähemärgi suurus on 2 bait'i ja sõne pikkus on salvestatud 4 bait'ina (2147483647 (positiivset) väärtust) sõne algusesse, siis 32bit'ine arvuti ei suudaks maksimaalsele sõnele mälu adreseerida, sest see oleks 4GB+4bait'i.
Arvuteooria negatiivse arvu mõiste
[muuda]arv | esitledud kujul |
-128 | 11111111 |
... | ... |
-3 | 10000010 |
-2 | 10000001 |
-1 | 10000000 |
0 | 00000000 |
1 | 00000001 |
2 | 00000010 |
3 | 00000011 |
... | ... |
127 | 01111111 |
Tihti teatakse, et andmeid salvestatakse arvutis binaarkoodis, kuid kuidas, on võibolla mõnele jäänud müstikaks. Kui meil on Javas byte tüüpi muutuja a, siis kui tema väärtused on:
Jah, esimene bitt tähistab muutuja a negatiivsuse olemasolu. Põhjus, miks ta on pandud andmetüübi lõppu ja miks 0 tähistab positiivsust, on et teda saaks teistesse tüüpidesse vahetada ja seda ilma eriliste komplikatsioonideta. Analoogiliselt positiivsetele arvudele võivad muutuja a väärtused olla negatiivsed arvud:
Tähele võiks panna, et Javas puudub arv -0(mis eksisteerib näiteks Programmeerimiskeel C's), seega minimaalseima tüübi arvu absoluutväärtus tekitaks vea! Ja veel enam, pika täisarvu puhul, kui soovitakse negatiivet arvu(või sellest positiivset) tuleb 1 bitt'i asemel vahetada 64 bitt'i.
Kuidas liita murdarve täpsust kaotamata
[muuda]Et seda saavutada, peab olema 2 BigDecimal objekti eksemplari. Siis võib kasutada klassi ehitatud meetodit .multiply(BigDecimal), mis parameetrina võtab teise BigDecimal objekti eksemplari ja tagastab uue BigDecimal väärtuse.
BigDecimal bd1 = new BigDecimal(12345.67d);
BigDecimal bd2 = new BigDecimal(12345.63d);
BigDecimal tulem = bd1.multiply(bd2);
System.out.println("2 pika murdarvu korrutis on: " + tulem.doubleValue());
Kuidas kontrollida, kas sõne on tühi
[muuda]Eeldades, et sõne muutuja ei ole olematu, on parim viis kontrollida sõne pikkust.
String sõne = "";
if (sõne.length() == 0) {
System.out.println("Olen tühi");
}
Võib kasutada ka .trim() funktsiooni, et ennnem esmalt eemaldada sõnele eelnev/järgnev tühemik.
Alates Java 6 versioonist, saab kasutada String'i klassi funktsiooni .isEmpty(). Funktsioon ei eemaldada sõnele eelnev/järgnev tühemike.
Kuidas kontrollida, kas sõne sisu vastab teise sõne sisule
[muuda]On teada, et == operaator Javas kontrollib vaid primaartüüpide väärtuseid, kõikil ülejäänud juhtudel kontrollitakse mäluaadresside kokkulangevust. String klassist võib leida meetodi .equals(), millega saab kontrollida, kas tekst on kokkulangev. Et kontrollida kas sisu on kokkulangev, tuleb sõnest esmalt likvideerida suur/väiketähtede komplikatsioon, selleks võib kasutada kas .toLowerCase() või .toUpperCase() meetodeid.
String sõne1 = "eriline";
String sõne2 = "EriLine";
if (sõne1.toLowerCase.equals(sõne2.toLowerCase)) {
System.out.println("Sõnede sisud on võrdsed");
}
Koodi vahetamise märgid
[muuda]Tähemärgid sõnes või tähemärgis, mis järgnevad \ omavad kompilaatorile erilist tähendust ja neid kutsutakse - koodi vahetamise märkideks. Järgnevalt on ära toodud Java koodivahetus märgid
tabulatsioon \t |
tagasisamm \b |
uue rea algus \n |
reavahetus \r |
lehevahetus \f |
ülakoma (jutumärk ') \' |
kahekordsed jutumärgid (") \" |
kurakaldkriips (\-märk) \\ |
JVM
[muuda]Võib tunduda täiesti uskumatu, kuid 2 bait muutujat liites teostatakse 32-bitt'ilist arvu aritmeetikat, ning Java Virtual Machine'is on byte'ed, short'id ja int'id kõik 4 bait'i(32 bitt'i) pikad.