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:
|