7. DatovΘ typy7.1. Zßkladnφ datovΘ typyZßkladnφ datovΘ typy jsou celoΦφselnΘ, znakovΘ, racionßlnφ a prßzdn² datov² typvoid , kter² se pou╛φvß jen u metod.7.1.1. CeloΦφselnΘ typyJava rozeznßvß Φty°i celoΦφselnΘ datovΘ typy. Hodnoty v╣ech t∞chto typ∙ se uklßdajφ znamΘnkov∞ ve dvojkovΘm dopl≥kovΘm k≤du. Li╣φ se pouze velikostφ:7.1.2. Znakov² typJedin²m znakov²m typem v Jav∞ je ╣estnßctibitov²char . Hodnotami tohoto
typu jsou ╣estnßctibitovΘ znaky Unicode (viz p°φloha C.).7.1.3. Racionßlnφ typyV Jav∞ si m∙╛eme vybrat ze dvou racionßlnφch typ∙. Zobrazenφ hodnot racionßlnφch typ∙ a operace s nimi jsou popsßny v norm∞ ANSI - IEEE.754 z roku 1985.
Ve t°φdßch
Jakßkoliv aritmetickß operace s racionßlnφmi hodnotami nevyvolß ╛ßdnou v²jimku
(narozdφl od celoΦφseln²ch typ∙, kde m∙╛e b²t vyvolßna v²jimka
7.1.4. Logick² typJedin²m logick²m typem v Jav∞ jeboolean , pro kter² jsou definovßny dv∞
hodnoty: false (logickß 0) a true (logickß 1).V²razy, jejich╛ v²sledkem je hodnota typu boolean, se pou╛φvajφ v p°φkazech if, switch, while a for. 7.2. ReferenΦnφ datovΘ typyJava obsahuje dva neprimitivnφ datovΘ typy, a to objekty a pole. Tyto typy jsou oznaΦovßny jako referenΦnφ a pou╛φvajφ se podobn∞ jako ukazatele v jin²ch jazycφch. Hodnota reference v╣ak nenφ adresa, a proto s referencemi nelze provßd∞t ukazatelovou aritmetiku. Hodnotu neplatnΘ reference reprezentuje konstanta null.7.2.1. ObjektJako typ objektu slou╛φ jmΘno t°φdy (viz 11.2.) nebo rozhranφ (viz 11.6.). Prßce s objekty viz 11.1..
7.2.2. PolePole jsou zvlß╣tnφm typem objekt∙. (1) Vytvß°φ se operßtoremnew :
int[] pole = new int[100]; // vytvo°enφ pole o 100 prvcφch a nebo statick²m inicializßtorem:
int[] dny = {31,28,31,30,31,30,31,31,30,31,30,31}; V obou p°φpadech je pro pole pam∞╗ alokovßna dynamicky a ob∞ jsou automaticky zru╣ena, jakmile na n∞ neexistuje odkaz (viz 11.1.3.). Vφcerozm∞rnß pole se deklarujφ jako pole polφ - poΦet dvojic hranat²ch zßvorek odpovφdß dimenzi pole.
P°i vytvß°enφ vφcerozm∞rn²ch polφ nemusφ b²t uvedeny v╣echny rozm∞ry. Povinn² je pouze prvnφ, ostatnφ je mo╛nΘ vynechat. Nelze v╣ak vynechat rozm∞r "uprost°ed":
int[][][] pole = new int[10][5][]; // OK int[][][] pole = new int[10][][4]; // Chyba! Statickß inicializace vφcerozm∞rnΘho pole je podobnß jako u jednorozm∞rnΘho. Je mo╛nΘ inicializovat jen prvnφch n∞kolik prvk∙ v ka╛dΘm rozm∞ru a vytvo°it vφcerozm∞rnΘ pole s prom∞nnou dΘlkou °ßdk∙.
int[][] ctverec = {{1,2},{3,4}}; int[][] trojuhelnik = {{1,2,3},{1,2},{1}}; P°φstup k jednotliv²m prvk∙m pole se provßdφ p°es sou°adnice prvku, kterΘ jsou uvedeny v hranat²ch zßvorkßch za nßzvem pole. Indexovßnφ v╣ech rozm∞r∙ pole zaΦφnß od nuly. (2) Rozm∞ry ka╛dΘho pole lze zjistit pomocφ ΦlenskΘ prom∞nnΘ length:
Od JDK 1.1 je mo╛nΘ p°i vytvo°enφ inicializovat anonymnφ pole - syntaxe:
|