Programmeerimiskeel Java/Primaarsed andmetüübid

Allikas: Vikiõpikud
Jump to navigation Jump to search
//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.