5
Obsah
Obsah Předmluva k aktuálnímu vydání
15
1 Úvod k prvnímu vydání z roku 2000
16
Typograficke´ a syntakticke´ konvence . . . . . . . . . . . . . . . . 2 Základní pojmy
20 21
2.1 Trocha historie nikoho nezabije . . . . . . . . . . . . . . . .
21
2.2 Zpu˚sob zpracova´nı´ programu v Javeˇ . . . . . . . . . . . . .
21
2.3 Ru˚zne´ typy programu˚ . . . . . . . . . . . . . . . . . . . . . .
22
2.4 Vy´vojove´ na´stroje a jejich verze . . . . . . . . . . . . . . . .
22
2.4.1 Vy´voj a verze JDK . . . . . . . . . . . . . . . . . . . .
23
2.5 Pouzˇ´ıvane´ pojmy . . . . . . . . . . . . . . . . . . . . . . . . .
25
2.5.1 Java Core API . . . . . . . . . . . . . . . . . . . . . .
25
2.5.2 Java Platforma . . . . . . . . . . . . . . . . . . . . .
26
2.5.3 Technologie hot-spot a JIT kompila´tor . . . . . . . .
26
2.6 Co byste meˇli veˇdeˇt, nezˇ skutecˇneˇ zacˇnete programovat . .
28
2.6.1 Jak prˇelozˇit a spustit program . . . . . . . . . . . .
28
2.6.2 Beˇzˇne´ proble´my . . . . . . . . . . . . . . . . . . . . .
29
3 Základní dovednosti v Javě
33
3.1 Komenta´rˇe . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
3.2 Zpu˚sob za´pisu identifika´toru˚ . . . . . . . . . . . . . . . . . .
35
3.3 Anotace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
3.4 Hlavnı´ program . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.5 Za´kladnı´ datove´ typy . . . . . . . . . . . . . . . . . . . . . .
41
3.5.1 Celocˇ´ıselne´ typy a jejich konstanty . . . . . . . . . .
42
6
Obsah
3.5.2 Znakovy´ typ a jeho konstanty . . . . . . . . . . . . . ˇ eteˇzcove´ konstanty (litera´ly) . . . . . . . . . . . . . 3.5.3 R 3.5.4 Logicky´ typ a jeho konstanty . . . . . . . . . . . . . 3.5.5 Rea´lne´ datove´ typy a jejich konstanty . . . . . . . . Deklarace promeˇnny´ch . . . . . . . . . . . . . . . . . . . . . 3.6.1 Deklarace promeˇnny´ch s konstantnı´ hodnotou . . . 3.6.2 Deklarace vy´cˇtove´ho typu . . . . . . . . . . . . . . . Opera´tor prˇirˇazenı´ . . . . . . . . . . . . . . . . . . . . . . . Opera´tor prˇetypova´nı´ . . . . . . . . . . . . . . . . . . . . . . 3.8.1 Rozsˇirˇujı´cı´ konverze . . . . . . . . . . . . . . . . . . 3.8.2 Zuzˇujı´cı´ konverze . . . . . . . . . . . . . . . . . . . . 3.8.3 Rozsˇirˇujı´cı´ konverze se ztra´tou prˇesnosti . . . . . . Aritmeticke´ vy´razy . . . . . . . . . . . . . . . . . . . . . . . 3.9.1 Una´rnı´ opera´tory . . . . . . . . . . . . . . . . . . . . 3.9.2 Bina´rnı´ opera´tory . . . . . . . . . . . . . . . . . . . . 3.9.3 Prˇirˇazovacı´ opera´tory . . . . . . . . . . . . . . . . . . Relacˇnı´ opera´tory . . . . . . . . . . . . . . . . . . . . . . . . 3.10.1 Zkra´cene´ vyhodnocova´nı´ logicky´ch soucˇtu˚ a soucˇinu˚ ´ plne´ vyhodnocova´nı´ logicky´ch soucˇtu˚ a soucˇinu˚ . . 3.10.2 U Bitove´ operace . . . . . . . . . . . . . . . . . . . . . . . . . . 3.11.1 Bitovy´ soucˇin . . . . . . . . . . . . . . . . . . . . . . . 3.11.2 Bitovy´ soucˇet . . . . . . . . . . . . . . . . . . . . . . . 3.11.3 Negace bit po bitu . . . . . . . . . . . . . . . . . . . . 3.11.4 Bitovy´ exkluzivnı´ soucˇet . . . . . . . . . . . . . . . . 3.11.5 Operace bitove´ho posunu doleva . . . . . . . . . . . 3.11.6 Operace bitove´ho posunu doprava zname´nkoveˇ . . . 3.11.7 Operace bitove´ho posunu doprava nezname´nkoveˇ . Priority vyhodnocova´nı´ opera´toru˚ . . . . . . . . . . . . . . .
43 45 46 46 48 49 51 54 55 56 58 58 59 60 61 62 64 64 66 67 68 69 70 71 71 71 72 73
4 Terminálový vstup a výstup 4.1 Forma´tovany´ vy´stup pomocı´ System.out.print() . . . . . 4.2 Komplexnı´ rˇesˇenı´ vy´stupu . . . . . . . . . . . . . . . . . . . 4.2.1 Vy´pis cele´ho cˇ´ısla v desı´tkove´ soustaveˇ . . . . . . . .
76 76 79 81
3.6
3.7 3.8
3.9
3.10
3.11
3.12
7
Obsah
4.2.2 Vy´pis cele´ho cˇ´ısla v jiny´ch soustava´ch . . . . . . . .
83
4.2.3 Vy´pis znaku . . . . . . . . . . . . . . . . . . . . . . .
83
4.2.4 Vy´pis rea´lne´ho cˇ´ısla . . . . . . . . . . . . . . . . . . .
83
4.2.5 Vy´pis rˇeteˇzce . . . . . . . . . . . . . . . . . . . . . . .
84
4.3 Forma´tovany´ vstup . . . . . . . . . . . . . . . . . . . . . . .
85
4.3.1 Za´kladnı´ zpu˚soby cˇtenı´ . . . . . . . . . . . . . . . . .
85
4.4 Proble´m vypra´zdneˇnı´ vstupu . . . . . . . . . . . . . . . . .
87
5 Řídicí struktury 5.1 Prˇ´ıkaz if a prˇ´ıkaz if–else
92 . . . . . . . . . . . . . . . . . .
92
5.1.1 Neu´plna´ podmı´nka . . . . . . . . . . . . . . . . . . . ´ plna´ podmı´nka . . . . . . . . . . . . . . . . . . . . . 5.1.2 U
92
5.2 Podmı´neˇny´ vy´raz – terna´rnı´ opera´tor . . . . . . . . . . . . .
94
5.3 Na´veˇsˇtı´ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
96
5.4 Prˇ´ıkazy break a continue . . . . . . . . . . . . . . . . . . .
97
5.5 Iteracˇnı´ prˇ´ıkazy – cykly . . . . . . . . . . . . . . . . . . . . 5.5.1 Prˇ´ıkaz while . . . . . . . . . . . . . . . . . . . . . . .
97 97
5.5.2 Prˇ´ıkaz do–while . . . . . . . . . . . . . . . . . . . . .
99
93
5.5.3 Prˇ´ıkaz for . . . . . . . . . . . . . . . . . . . . . . . . 100 5.6 Prˇ´ıkaz switch . . . . . . . . . . . . . . . . . . . . . . . . . . 106 5.7 Prˇ´ıkaz return . . . . . . . . . . . . . . . . . . . . . . . . . . 111 6 Metody
114
6.1 Deklarace metody . . . . . . . . . . . . . . . . . . . . . . . . 115 6.2 Metoda bez parametru˚ . . . . . . . . . . . . . . . . . . . . . 116 6.3 Metoda bez na´vratove´ho typu – procedura . . . . . . . . . . 117 6.3.1 Procedura bez parametru˚ . . . . . . . . . . . . . . . 117 6.4 Metoda s vı´ce parametry ru˚zny´ch typu˚ . . . . . . . . . . . . 118 6.5 Rekurzivnı´ metody . . . . . . . . . . . . . . . . . . . . . . . 119 6.6 Konverze skutecˇny´ch parametru˚ a na´vratove´ hodnoty metody120 6.7 Zpu˚soby prˇeda´va´nı´ skutecˇny´ch parametru˚ metod . . . . . . 121 6.8 Prˇetı´zˇene´ metody . . . . . . . . . . . . . . . . . . . . . . . . 121 6.9 Mı´sta deklaracı´ metod . . . . . . . . . . . . . . . . . . . . . 123
8
Obsah
6.10 Promeˇnne´ z pohledu mı´sta deklarace . . . . . . . . . . . . . 124 6.10.1 Neloka´lnı´ promeˇnne´ – “globa´lnı´” promeˇnne´ . . . . . 124 6.10.2 Promeˇnne´ metod – loka´lnı´ promeˇnne´ . . . . . . . . . 126 6.10.3 Zastı´neˇnı´ neloka´lnı´ch promeˇnny´ch loka´lnı´mi . . . . 127 7 Pole
129
7.1 Pojem referencˇnı´ datovy´ typ . . . . . . . . . . . . . . . . . . 129 7.2 Deklarace pole . . . . . . . . . . . . . . . . . . . . . . . . . . 130 7.3 De´lka pole . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 7.4 Inicializovane´ pole . . . . . . . . . . . . . . . . . . . . . . . . 132 7.5 Speciality prˇi pra´ci s poli . . . . . . . . . . . . . . . . . . . . 133 7.5.1 Pru˚chod vsˇemi prvky pole . . . . . . . . . . . . . . . 133 7.5.2 Vy´pis cele´ho pole najednou
. . . . . . . . . . . . . . 134
7.5.3 Serˇazenı´ pole . . . . . . . . . . . . . . . . . . . . . . . 134 7.6 Dvourozmeˇrna´ pole . . . . . . . . . . . . . . . . . . . . . . . 135 7.6.1 Inicializace dvourozmeˇrne´ho pole . . . . . . . . . . . 136 7.7 Trojrozmeˇrna´ pole . . . . . . . . . . . . . . . . . . . . . . . . 136 7.8 Vı´ce rozmeˇru˚ v jednorozmeˇrne´m poli . . . . . . . . . . . . . 137 8 Třídy a objekty – základní dovednosti
139
8.1 Deklarace trˇ´ıdy . . . . . . . . . . . . . . . . . . . . . . . . . 140 8.2 Vytvorˇenı´ objektu . . . . . . . . . . . . . . . . . . . . . . . . 141 8.3 Prˇ´ımy´ prˇ´ıstup k datu˚m objektu . . . . . . . . . . . . . . . . 142 8.4 Pra´ce s metodami . . . . . . . . . . . . . . . . . . . . . . . . 142 8.5 Konstruktory . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 8.5.1 Implicitnı´ konstruktor . . . . . . . . . . . . . . . . . 147 8.6 Vyuzˇitı´ this pro prˇ´ıstup k promeˇnny´m . . . . . . . . . . . . 147 8.7 Prˇetı´zˇenı´ metod a konstruktoru˚ . . . . . . . . . . . . . . . . 148 8.8 Vyuzˇitı´ this pro prˇ´ıstup ke konstruktoru . . . . . . . . . . 150 8.9 Vola´nı´ metod jiny´mi metodami te´zˇe trˇ´ıdy nebo konstruktorem151 8.10 Pouzˇitı´ promeˇnne´ trˇ´ıdy v objektech . . . . . . . . . . . . . . 151 8.11 Pouzˇitı´ staticky´ch metod v objektech . . . . . . . . . . . . . 154 8.11.1 Pouzˇitı´ staticke´ metody ze trˇ´ıdy z Java Core API . . 154
9
Obsah
8.11.2 Pouzˇitı´ staticke´ metody z te´zˇe trˇ´ıdy . 8.12 Inicializace promeˇnny´ch trˇ´ıdy . . . . . . . . 8.13 Rusˇenı´ objektu˚ . . . . . . . . . . . . . . . . . 8.14 Ukoncˇenı´ pra´ce s objekty . . . . . . . . . . .
. . . .
. . . .
9 Řetězce a znaky 9.1 Vytvorˇenı´ rˇeteˇzce . . . . . . . . . . . . . . . . . 9.1.1 Inicializovane´ pole rˇeteˇzcu˚ . . . . . . . . 9.2 Pra´ce s cely´mi rˇeteˇzci . . . . . . . . . . . . . . . 9.2.1 Porovna´va´nı´ . . . . . . . . . . . . . . . . 9.2.2 Prˇevody na mala´ cˇi velka´ pı´smena . . . 9.2.3 Spojenı´ rˇeteˇzcu˚ . . . . . . . . . . . . . . 9.2.4 Na´hrada vsˇech znaku˚ v rˇeteˇzci . . . . . 9.3 Pra´ce s cˇa´stı´ rˇeteˇzce . . . . . . . . . . . . . . . . 9.3.1 Zı´ska´nı´ cˇa´sti rˇeteˇzce . . . . . . . . . . . 9.3.2 Pra´ce se zacˇa´tkem a koncem rˇeteˇzce . . 9.3.3 Orˇ´ıznutı´ bı´ly´ch znaku˚ na okrajı´ch . . . 9.4 Pra´ce s jednotlivy´mi znaky rˇeteˇzce . . . . . . . 9.4.1 Zı´ska´nı´ znaku . . . . . . . . . . . . . . . 9.4.2 Hleda´nı´ znaku . . . . . . . . . . . . . . . 9.5 Konverze za´kladnı´ch datovy´ch typu˚ na rˇeteˇzec 9.5.1 Tisk do rˇeteˇzce . . . . . . . . . . . . . . . 9.6 Konverze rˇeteˇzce na za´kladnı´ datove´ typy . . . 9.7 Vyvola´nı´ vı´ce metod jednı´m prˇ´ıkazem . . . . . 9.8 Deˇlenı´ rˇeteˇzce na cˇa´sti pomocı´ split() . . . . 9.8.1 Za´kladnı´ pouzˇitı´ . . . . . . . . . . . . . . 9.8.2 Pouzˇitı´ regula´rnı´ch vy´razu˚ . . . . . . . . 9.9 Metoda toString() . . . . . . . . . . . . . . . . 9.10 Trˇ´ıda StringBuffer . . . . . . . . . . . . . . . . 9.10.1 Vytvorˇenı´ instance . . . . . . . . . . . . 9.10.2 De´lka rˇeteˇzce . . . . . . . . . . . . . . . 9.10.3 Zmeˇny cele´ho rˇeteˇzce . . . . . . . . . . . 9.10.4 Zmeˇny cˇa´sti rˇeteˇzce . . . . . . . . . . . .
. . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . .
156 158 160 161
. . . . . . . . . . . . . . . . . . . . . . . . . . .
165 166 167 167 167 168 169 169 169 169 170 170 171 171 171 172 173 174 175 175 176 178 180 182 182 182 183 183
10
Obsah
9.10.5 Konverze na String . . . . . . . . . . . . . . . . . . . 185 9.11 Trˇ´ıda Character – pra´ce s jednotlivy´mi znaky . . . . . . . 185 9.11.1 Rozpozna´va´nı´ druhu znaku˚ . . . . . . . . . . . . . . 185 9.11.2 Zmeˇna velikosti pı´smene . . . . . . . . . . . . . . . . 186 9.11.3 Prˇevod jednotlivy´ch znaku˚ na cˇ´ısla . . . . . . . . . . 187 10 Třídy a objekty – pokračování
188
10.1 Modifika´tory deklarace trˇ´ıdy . . . . . . . . . . . . . . . . . . 188 10.1.1 Trˇ´ıdy s modifika´torem public . . . . . . . . . . . . . 189 10.2 Kompozice objektu˚ . . . . . . . . . . . . . . . . . . . . . . . 190 10.3 Autorizovany´ prˇ´ıstup k datu˚m . . . . . . . . . . . . . . . . . 192 10.4 Pole objektu˚ . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 10.4.1 Pole objektu˚ obalovacı´ch trˇ´ıd a automaticke´ prˇevody 197 10.5 Prˇeda´va´nı´ skutecˇny´ch parametru˚ metoda´m . . . . . . . . . 198 10.5.1 Prˇeda´va´nı´ primitivnı´ch datovy´ch typu˚ . . . . . . . . 198 10.5.2 Prˇeda´va´nı´ objektu˚ . . . . . . . . . . . . . . . . . . . . 200 10.5.3 Prˇeda´va´nı´ polı´ jako skutecˇny´ch parametru˚ metoda´m 202 10.5.4 Prˇeda´va´nı´ vı´cerozmeˇrny´ch polı´ metoda´m . . . . . . 204 11 Dědičnost 206 ´ 11.1 Uvodnı´ pozna´mky . . . . . . . . . . . . . . . . . . . . . . . . 206 11.2 Realizace deˇdicˇnosti . . . . . . . . . . . . . . . . . . . . . . . 207 11.3 Proble´my s neimplicitnı´mi konstruktory rodicˇovske´ trˇ´ıdy . 210 11.4 Nechceme, aby bylo mozˇne´ metodu prˇekry´t – fina´lnı´ metody 211 11.5 Chceme, aby bylo nutne´ metodu prˇekry´t – abstraktnı´ metody a trˇ´ıdy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 11.6 Nechceme, aby bylo mozˇne´ trˇ´ıdu zdeˇdit – fina´lnı´ trˇ´ıdy . . . 214 11.7 Prˇekrytı´ promeˇnne´ . . . . . . . . . . . . . . . . . . . . . . . 215 11.8 Za´kladem je Object . . . . . . . . . . . . . . . . . . . . . . . 216 11.8.1 Metoda clone() . . . . . . . . . . . . . . . . . . . . . 217 11.8.2 Metoda equals() . . . . . . . . . . . . . . . . . . . . 223 11.8.3 Metoda hashCode() . . . . . . . . . . . . . . . . . . . 224 11.8.4 Metoda getClass() . . . . . . . . . . . . . . . . . . . 225
11
Obsah
12 Balíky 12.1 Import balı´ku˚ . . . . . . . . . . . . . . . . . . . . . . . 12.1.1 Staticky´ import balı´ku˚ . . . . . . . . . . . . . . 12.2 Vytva´rˇenı´ balı´ku˚ . . . . . . . . . . . . . . . . . . . . . . 12.2.1 Celosveˇtoveˇ platna´ konvence pro pojmenova´nı´ 12.3 Prˇ´ıstupova´ pra´va . . . . . . . . . . . . . . . . . . . . . 12.3.1 Specifika´tor private . . . . . . . . . . . . . . . 12.3.2 Specifika´tor protected . . . . . . . . . . . . . . 12.3.3 Specifika´tor public . . . . . . . . . . . . . . . . 12.3.4 Specifika´tor neuveden (je “prˇa´telsky´”) . . . . . 12.4 Prˇi deˇdeˇnı´ nelze zeslabit prˇ´ıstupova´ pra´va . . . . . . .
. . . . . . . . . .
228 229 230 232 234 234 235 237 239 239 240
. . . . . . . . .
241 242 243 244 245 246 247 248 250 251
14 Polymorfizmus 14.1 Vyuzˇitı´ abstraktnı´ trˇ´ıdy . . . . . . . . . . . . . . . . . . . . . 14.2 Pouzˇitı´ neabstraktnı´ch trˇ´ıd . . . . . . . . . . . . . . . . . . 14.3 Pouzˇitı´ rozhranı´ . . . . . . . . . . . . . . . . . . . . . . . . .
253 254 257 259
13 Rozhraní (interface) 13.1 Konstrukce rozhranı´ . . . . . . . . . . . . . . . . . . . 13.2 Pouzˇitı´ jednoho rozhranı´ . . . . . . . . . . . . . . . . . 13.3 Pouzˇitı´ rozhranı´ jako typu referencˇnı´ promeˇnne´ . . . 13.4 Implementace vı´ce rozhranı´ jednou trˇ´ıdou . . . . . . . 13.5 Instance rozhranı´ mu˚zˇe vyuzˇ´ıvat jen metody rozhranı´ 13.6 Implementovane´ rozhranı´ se deˇdı´ beze zmeˇny . . . . 13.7 Deˇdeˇnı´ trˇ´ıdy a soucˇasna´ implementace rozhranı´ . . . 13.8 Deˇdeˇnı´ rozhranı´ a konstanty rozhranı´ . . . . . . . . . 13.9 Vyuzˇitı´ opera´toru instanceof . . . . . . . . . . . . . .
15 Vnořené třídy 15.1 Vnitrˇnı´ trˇ´ıdy . . . . . . . . . . . . . . . 15.1.1 Implementace rozhranı´ pomocı´ vnitrˇnı´ trˇ´ıdu . . . . . . . . . . . 15.1.2 Implementace rozhranı´ pomocı´ anonymnı´ vnitrˇnı´ trˇ´ıdu . . . . .
. . . . . metody . . . . . metody . . . . .
. . . . . . . . . .
. . . . . . . . .
. . . . . . . . . .
. . . . . . . . .
261 . . . . . . . 262 vyuzˇ´ıvajı´cı´ . . . . . . . 263 vyuzˇ´ıvajı´cı´ . . . . . . . 264
12
Obsah
15.1.3 Promeˇnna´ typu rozhranı´ vyuzˇ´ıvajı´cı´ anonymnı´ vnitrˇnı´ trˇ´ıdu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 15.1.4 Vnitrˇnı´ trˇ´ıda je vytvorˇena´ deˇdeˇnı´m . . . . . . . . . . 267 16 Výjimky
269
16.1 Mozˇne´ druhy vy´jimek . . . . . . . . . . . . . . . . . . . . . . 270 16.1.1 Trˇ´ıda Error . . . . . . . . . . . . . . . . . . . . . . . 271 16.1.2 Trˇ´ıda RuntimeException . . . . . . . . . . . . . . . . 272 16.1.3 Trˇ´ıda Exception . . . . . . . . . . . . . . . . . . . . . 273 16.2 Zpu˚soby osˇetrˇenı´ vy´jimky . . . . . . . . . . . . . . . . . . . 274 16.2.1 Prˇeda´nı´ vy´jimky vy´sˇe – deklarace vy´jimky . . . . . 274 16.2.2 Kompletnı´ osˇetrˇenı´ vy´jimky . . . . . . . . . . . . . . 276 16.2.3 Osˇetrˇenı´ vy´jimky a na´sledne´ prˇeda´nı´ vy´sˇe . . . . . . 278 16.2.4 Naprosto nejhorsˇ´ı reakce na vy´jimku . . . . . . . . . 279 16.2.5 Rozumna´ reakce na vy´jimku . . . . . . . . . . . . . . 280 16.2.6 Elegantnı´ reakce na vy´jimku . . . . . . . . . . . . . 281 16.2.7 Vy´pis vy´jimky do oke´nka . . . . . . . . . . . . . . . . 282 16.3 Seskupova´nı´ vy´jimek . . . . . . . . . . . . . . . . . . . . . . 283 16.3.1 Postupna´ selekce vy´jimek . . . . . . . . . . . . . . . 285 16.4 Vyvola´nı´ vy´jimky . . . . . . . . . . . . . . . . . . . . . . . . 286 16.5 Vytvorˇenı´ a pouzˇitı´ vlastnı´ vy´jimky . . . . . . . . . . . . . . 287 16.6 Konstrukce try–catch–finally . . . . . . . . . . . . . . . . 289 16.6.1 Konstrukce try–finally . . . . . . . . . . . . . . . . 291 17 Adresáře a soubory
293
17.1 Neza´vislost na operacˇnı´m syste´mu . . . . . . . . . . . . . . 293 17.2 Vytvorˇenı´ instance trˇ´ıdy File . . . . . . . . . . . . . . . . . 294 17.3 Vytvorˇenı´ souboru nebo adresa´rˇe . . . . . . . . . . . . . . . 295 17.4 Pra´ce se souborem nebo adresa´rˇem . . . . . . . . . . . . . . 296 17.5 Vy´pis adresa´rˇe . . . . . . . . . . . . . . . . . . . . . . . . . . 297 17.5.1 Selektivnı´ vy´pis adresa´rˇe . . . . . . . . . . . . . . . 298
13
Obsah
18 Čtení ze vstupů a zápis na výstupy
301
18.1 Proudy znaku˚ a proudy bajtu˚ . . . . . . . . . . . . . . . . . 302 18.2 Dva ru˚zne´ typy trˇ´ıd zdeˇdeˇny´ch od za´kladnı´ch trˇ´ıd . . . . . 303 18.2.1 Trˇ´ıdy pro pra´ci se zarˇ´ızenı´mi . . . . . . . . . . . . . 304 18.2.2 Trˇ´ıdy vlastnostı´ (filtru˚) . . . . . . . . . . . . . . . . . 304 18.3 Cˇtenı´ ze souboru a za´pis do souboru . . . . . . . . . . . . . 305 18.3.1 Vstupy a vy´stupy znaku˚ . . . . . . . . . . . . . . . . 305 18.3.2 Vstupy a vy´stupy bajtu˚ . . . . . . . . . . . . . . . . . 307 18.3.3 Dalsˇ´ı dovednosti se soubory . . . . . . . . . . . . . . 308 18.3.4 Bezpecˇne´ zavı´ra´nı´ souboru˚ a rˇesˇenı´ vy´jimek . . . . 309 18.4 Trˇ´ıdy vlastnostı´ . . . . . . . . . . . . . . . . . . . . . . . . . 312 18.4.1 Vlastnost: bufferova´nı´ . . . . . . . . . . . . . . . . . 313 18.4.2 Vlastnost: cˇtenı´ po rˇa´dcı´ch . . . . . . . . . . . . . . . 313 18.4.3 Vlastnost: vy´beˇrove´ cˇtenı´ po rˇa´dcı´ch . . . . . . . . . 314 18.4.4 Vlastnost: vra´cenı´ prˇecˇtene´ho znaku
. . . . . . . . 314
18.4.5 Vlastnost: forma´tova´nı´ vy´stupu . . . . . . . . . . . . 315 18.4.6 Vlastnost: forma´tova´nı´ vy´stupu s rˇa´dkovy´m bufferova´nı´m . . . . . . . . . . . . . . . . . . . . . . . . . . 316 18.4.7 Forma´tovany´ vstup pomocı´ Scanner . . . . . . . . . 316 18.4.8 Forma´tovany´ vstup pomocı´ FileReader . . . . . . . 318 18.4.9 Vlastnost: neforma´tovany´ vstup a vy´stup za´kladnı´ch datovy´ch typu˚ . . . . . . . . . . . . . . . . . . . 319 18.4.10Vlastnost: serializace objektu˚ . . . . . . . . . . . . . 321 18.4.11Seskupova´nı´ vlastnostı´ . . . . . . . . . . . . . . . . . 323 18.5 Vstup a vy´stup do pameˇti . . . . . . . . . . . . . . . . . . . 324 18.6 Vstup a vy´stup do roury . . . . . . . . . . . . . . . . . . . . 325 18.7 Soubory s prˇ´ımy´m prˇ´ıstupem . . . . . . . . . . . . . . . . . 327 19 Systémové akce
333
19.1 Parametry prˇ´ıkazove´ rˇa´dky . . . . . . . . . . . . . . . . . . 333 19.2 Syste´move´ atributy a zdroje . . . . . . . . . . . . . . . . . . 335 19.2.1 Standardnı´ vstupnı´ a vy´stupnı´ proudy . . . . . . . . 336 19.2.2 Syste´move´ vlastnosti . . . . . . . . . . . . . . . . . . 338
14
Obsah
19.3 Uzˇitecˇne´ metody ze trˇ´ıdy System . . . . . 19.3.1 Informace o cˇase . . . . . . . . . . . 19.3.2 Spusˇteˇnı´ garbage collectoru . . . . 19.3.3 Zjisˇteˇnı´ velikosti dostupne´ pameˇti 19.3.4 Spusˇteˇnı´ finalizeru . . . . . . . . . 19.3.5 Na´silne´ ukoncˇenı´ programu . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
20 Vlákna 20.1 Trˇ´ıda Thread . . . . . . . . . . . . . . . . . . . . . . . . 20.2 Spolupra´ce dvou vla´ken . . . . . . . . . . . . . . . . . 20.2.1 Vla´kna se pravidelneˇ strˇ´ıdajı´ . . . . . . . . . . 20.2.2 Vla´kna se strˇ´ıdajı´ nepravidelneˇ . . . . . . . . . 20.3 Stavy vla´kna a pla´novacı´ algoritmus . . . . . . . . . . 20.3.1 Stavy vla´kna . . . . . . . . . . . . . . . . . . . . 20.3.2 Priorita vla´kna . . . . . . . . . . . . . . . . . . 20.3.3 Sdı´lenı´ cˇasu . . . . . . . . . . . . . . . . . . . . 20.3.4 Prakticke´ oveˇrˇenı´ pla´nova´nı´ a priorit . . . . . 20.4 Rozhranı´ Runnable . . . . . . . . . . . . . . . . . . . . 20.5 Cˇeka´nı´ na vstup cˇi vy´stup . . . . . . . . . . . . . . . . 20.6 Synchronizace vla´ken . . . . . . . . . . . . . . . . . . . 20.6.1 Vla´kno cˇeka´ trpeˇliveˇ na konec jine´ho vla´kna . 20.6.2 Vla´kno cˇeka´ netrpeˇliveˇ na konec jine´ho vla´kna 20.6.3 Vla´kno ukoncˇ´ı prˇedcˇasneˇ jine´ vla´kno . . . . . . 20.6.4 Vla´kno je na´silneˇ probuzeno . . . . . . . . . . . 20.6.5 Kriticke´ sekce – synchronizovane´ metody . . . 20.6.6 Kriticke´ sekce – synchronizovane´ bloky . . . . 20.6.7 Synchronizace cˇasove´ posloupnosti vla´ken . . . 20.7 Dalsˇ´ı informace o vla´knech . . . . . . . . . . . . . . . . 20.7.1 Problematika hladoveˇnı´ a uva´znutı´ . . . . . . . 20.7.2 Skupiny vla´ken . . . . . . . . . . . . . . . . . . 20.7.3 Vla´kna typu de´mon . . . . . . . . . . . . . . . .
. . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . .
341 341 342 343 344 345
. . . . . . . . . . . . . . . . . . . . . . .
347 348 350 353 354 355 355 356 357 357 358 360 362 362 363 364 366 367 369 370 376 376 377 377
Literatura
380
Rejstřík
381