Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 5 - Primitivní datové typy v Javě

V předešlém cvičení, Řešené úlohy k 3.-4. lekci Javy, jsme si procvičili nabyté zkušenosti z předchozích lekcí.

Dnešní Java tutoriál bude hodně teoretický, podíváme se na datové typy více zblízka a vysvětlíme si, kdy jaký použít. Na konci si vytvoříme jednoduchou ukázku.

Datové typy

Java rozeznává dva druhy datových typů, primitivní a referenční.

Primitivní datové typy

Proměnné primitivního datového typu si dokážeme jednoduše představit. Může se jednat např. o číslo nebo znak. V paměti je jednoduše uložena přímo hodnota a my k této hodnotě můžeme z programu přímo přistupovat. Slovo přímo jsem tolikrát nepoužil jen náhodou. V této sekci tutoriálů se budeme věnovat výhradně těmto proměnným.

Celočíselné datové typy

Podívejme se nyní na tabulku všech vestavěných celočíselných datových typů v Javě, všimněte si typu int, který již známe z minula:

Datový typ Rozsah Velikost
byte -128 až 127 8 bitů
short -32 768 až 32 767 16 bitů
int -2 147 483 648 až 2 147 483 647 32 bitů
long -9 223 372 036 854 775 808 až 9 223 372 036 854 775 807 64 bitů

Asi vás napadá otázka, proč máme tolik možných typů pro uložení čísla. Odpověď je prostá, záleží na jeho velikosti. Čím větší číslo, tím více spotřebuje paměti. Pro věk uživatele tedy zvolíme datový typ byte, protože se jistě nedožije více než 127 let. Představte si databázi milionu uživatelů nějakého systému, když zvolíme datový typ int místo byte, bude zabírat 4x více místa. Naopak, když budeme mít funkci k výpočtu faktoriálu, stěží nám bude stačit rozsah datový typ int a použijeme long.

Nad výběrem datového typu nemusíte moc přemýšlet a většinou se používá jednoduše int. Typ řešte pouze v případě, když jsou proměnné v nějakém poli (obecně kolekci) a je jich tedy více, potom se vyplatí zabývat se paměťovými nároky. Tabulky sem dávám spíše pro úplnost. Mezi typy samozřejmě funguje již zmíněná implicitní konverze, tedy můžeme přímo přiřadit datový typ int do proměnné typu long a podobně, aniž bychom něco konvertovali.

Desetinná čísla

U desetinných čísel je situace poněkud jednodušší, máme na výběr pouze dva datové typy. Samozřejmě se liší opět v rozsahu hodnoty, dále však ještě v přesnosti (vlastně počtu des. míst). Datový typ double má již dle názvu dvojnásobnou přesnost oproti float:

Datový typ Rozsah Přesnost
float +-1.5 * 10−45 až +-3.4 * 1038 7 čísel
double +-5.0 * 10−324 až +-1.7 * 10308 15-16 čísel

Pozor, vzhledem k tomu, že desetinná čísla jsou v počítači uložena ve dvojkové soustavě, dochází k určité ztrátě přesnosti. Odchylka je sice téměř zanedbatelná, nicméně když budete programovat např. finanční systém, nepoužívejte tyto dat. typy pro uchování peněz, mohlo by dojít k malým odchylkám.

Když do typu float chceme dosadit přímo ve zdrojovém kódu, musíme použít suffix F, u typu double suffix D:

float f = 3.14F;
double d = 2.72;

U double ho můžeme vypustit, jelikož je výchozím desetinným typem.

Jako desetinný separátor používáme ve zdrojovém kódu vždy tečku, nehledě na to, jaké máme v operačním systému regionální nastavení.

Další vestavěné datové typy

Podívejme se na další datové typy, které nám Java nabízí:

Datový typ Rozsah Velikost/Přesnost
char U+0000 až U+ffff 16 bitů
boolean true nebo false 8 bitů
Datový typ char

Typ char nám reprezentuje jeden znak na rozdíl od typu String, který reprezentoval celý řetězec znaků. Znaky v Javě píšeme do apostrofů:

char znak = 'A';

Typ char patří v podstatě do celočíselných proměnných (obsahuje číselný kód znaku), ale přišlo mi logičtější uvést ho zde.

Datový typ BigDecimal

Typ BigDecimal řeší problém ukládání desetinných čísel v binární podobě, ukládá totiž číslo vnitřně jako pole. Používá se tedy pro uchování peněžních hodnot. Nebudeme si zde ukazovat použití, protože se používá jako objekt. Pokud budete dělat někdy finanční výpočty, tak si na něj vzpomeňte.

V Javě jsou čísla tzv. odděděna od třídy Number. To je spíše informace do budoucna. Jelikož nyní nevíme, co dědičnost znamená, důležitá pro nás není. Třída Number obsahuje ještě čtyři podtřídy, kterými se nebudeme podrobněji zabývat. Třídy BigDecimal a BigInteger slouží k výpočtům s vysokou přesností. Třídy AtomicInteger a AtomicLong se používají v aplikacích s více podprocesy. Opět je důležité, abyste věděli, že něco takového existuje a případně se sem později vrátili.

Datový typ boolean

Typ boolean nabývá dvou hodnot: true (pravda) a false (nepravda). Budeme ho používat zejména tehdy, až se dostaneme k podmínkám. Do proměnné typu boolean lze uložit jak přímo hodnotu true/false, tak i logický výraz. Zkusme si jednoduchý příklad:

boolean nepravda = false;
boolean vyraz = (15 > 5);
System.out.println(nepravda);
System.out.println(vyraz);

Výstup programu:

Konzolová aplikace
false
true

Výrazy píšeme do závorek. Vidíme, že výraz nabývá hodnoty true (pravda), protože hodnota 15 je opravdu větší než 5. Od výrazů je to jen krok k podmínkám, na ně se podíváme později v kurzu. To je pro dnešní lekci vše 🙂

V příští lekci, Textové řetězce a referenční typy v Javě, se zaměříme na referenční datové typy, popíšeme si metody na řetězci a naučíme se s nimi pracovat.


 

Předchozí článek
Řešené úlohy k 3.-4. lekci Javy
Všechny články v sekci
Základní konstrukce jazyka Java
Přeskočit článek
(nedoporučujeme)
Textové řetězce a referenční typy v Javě
Článek pro vás napsal David Hartinger
Avatar
Uživatelské hodnocení:
948 hlasů
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David se informační technologie naučil na Unicorn University - prestižní soukromé vysoké škole IT a ekonomie.
Aktivity