Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20

Podobné dokumenty
Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Ukazka knihy z internetoveho knihkupectvi

O autorovi O odborném korektorovi Úvod 17 Vývoj jazyka Java Java SE 8 Struktura této knihy Předchozí zkušenosti s programováním nejsou potřebné

Algoritmizace a programování

Úvod do programovacích jazyků (Java)

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

5 Přehled operátorů, příkazy, přetypování

Paměť počítače. alg2 1

Seminář Java IV p.1/38

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/

Úvod do programování - Java. Cvičení č.4

Operátory, výrazy. Tomáš Pitner, upravil Marek Šabo

Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Java/QE Akademie - Osnova

4. ZÁKLADNÍ POJMY Z OBJEKTOVĚ ORIENTOVANÉHO PROGRAMOVÁNÍ

Algoritmizace a programování

Zápis programu v jazyce C#

Úvod do programovacích jazyků (Java)

Jazyky C a C++ kompletní průvodce 2., aktualizované vydání. Miroslav Virius

Úvod do programování. Lekce 1

Datové typy strana 29

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Stručný obsah První týden Druhý týden 211 Třetí týden 451 Rejstřík 787

Výčtový typ strana 67

Obsah. Kapitola 1. Kapitola 2

Seminář Java II p.1/43

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Programovací jazyk Pascal

Z. Kotala, P. Toman: Java ( Obsah )

Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová

Algoritmizace a programování

PŘETĚŽOVÁNÍ OPERÁTORŮ

Jazyk C# a platforma.net

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

typová konverze typová inference

KTE / ZPE Informační technologie

6. Příkazy a řídící struktury v Javě

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh. Ing. Hodál Jaroslav, Ph.D. VY_32_INOVACE_25 09

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Java reprezentace dat, výrazy. A0B36PR1-Programování 1 Fakulta elektrotechnická České vysoké učení technické

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Úvodem... 9 Kapitola 1 Karetních

10 Balíčky, grafické znázornění tříd, základy zapozdření

8 Třídy, objekty, metody, předávání argumentů metod

Programování v jazyce JavaScript

7. Datové typy v Javě

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Teoretické minimum z PJV

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.

Algoritmizace a programování

Vzdělávací oblast: Informatika a informační a komunikační technologie Vzdělávací obor: Programování. Předmět: Programování

Viditelnost (práva přístupu) Tomáš Pitner, upravil Marek Šabo

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Soubor jako posloupnost bytů

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Profilová část maturitní zkoušky 2017/2018

8. přednáška: Soubory a proudy

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

Opakování programování

URČITÝM ZPŮSOBEM PODOBNÉ

6 Příkazy řízení toku

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

ČÁST 1. Základy 32bitového programování ve Windows

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e);

Řídicí struktury. alg3 1

Jazyky C a C++ kompletní průvodce 2., aktualizované vydání. Miroslav Virius

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.

Úvod do programovacích jazyků (Java)

Algoritmy I. Cvičení č. 2, 3 ALGI 2018/19

Programovací jazyk C++ Hodina 1

U N I V E R Z I N S K Á I T A I L V E R E N L N T A S O

Struktura programu v době běhu

1. Téma 03 - Rozhodování

NPRG031 Programování II --- 2/2 Z, Zk

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Algoritmizace a programování

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Programování v C++ 3, 3. cvičení

Obsah. Úvodem 15. Zaměření knihy 15 Co v knize najdete 15 Doprovodné CD 17 Poděkování 18

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

Obsah přednášky. Příkaz for neúplný. Příkaz for příklady. Cyklus for each (enhanced for loop) Příkaz for příklady

Obsah. Začínáme programovat v Ruby on Rails 9. Úvod Vítejte v Ruby 15. O autorovi 9 Poděkování 9

Data, výrazy, příkazy

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Příklady: (y + (sin(2*x) + 1)*2)/ /2 * 5 = 8.5 (1+3)/2 * 5 = /(2 * 5) = 1.3. Pavel Töpfer, 2017 Programování 1-3 1

Jazyk C Program v jazyku C má následující strukturu: konstanty nebo proměnné musí Jednoduché datové typy: Strukturované datové typy Výrazy operátory

NPRG031 Programování II 1 / :47:55

Transkript:

Obsah 5 Obsah Předmluva k aktuálnímu vydání 15 1 Úvod k prvnímu vydání z roku 2000 16 Typografické a syntaktické konvence................ 20 2 Základní pojmy 21 2.1 Trocha historie nikoho nezabije................ 21 2.2 Způsob zpracování programu v Javě............. 21 2.3 Různé typy programů...................... 22 2.4 Vývojové nástroje a jejich verze................ 22 2.4.1 Vývoj a verze JDK.................... 23 2.5 Používané pojmy......................... 25 2.5.1 Java Core API...................... 25 2.5.2 Java Platforma..................... 26 2.5.3 Technologie hot-spot a JIT kompilátor........ 26 2.6 Co byste měli vědět, než skutečně začnete programovat.. 28 2.6.1 Jak přeložit a spustit program............ 28 2.6.2 Běžné problémy..................... 29 3 Základní dovednosti v Javě 33 3.1 Komentáře............................ 33 3.2 Způsob zápisu identifikátorů.................. 35 3.3 Anotace.............................. 36 3.4 Hlavní program......................... 40 3.5 Základní datové typy...................... 41 3.5.1 Celočíselné typy a jejich konstanty.......... 42

6 Obsah 3.5.2 Znakový typ a jeho konstanty............. 43 3.5.3 Řetězcové konstanty (literály)............. 45 3.5.4 Logický typ a jeho konstanty............. 46 3.5.5 Reálné datové typy a jejich konstanty........ 46 3.6 Deklarace proměnných..................... 48 3.6.1 Deklarace proměnných s konstantní hodnotou... 49 3.6.2 Deklarace výčtového typu............... 51 3.7 Operátor přiřazení....................... 54 3.8 Operátor přetypování...................... 55 3.8.1 Rozšiřující konverze.................. 56 3.8.2 Zužující konverze.................... 58 3.8.3 Rozšiřující konverze se ztrátou přesnosti...... 58 3.9 Aritmetické výrazy....................... 59 3.9.1 Unární operátory.................... 60 3.9.2 Binární operátory.................... 61 3.9.3 Přiřazovací operátory.................. 62 3.10 Relační operátory........................ 64 3.10.1 Zkrácené vyhodnocování logických součtů a součinů 64 3.10.2 Úplné vyhodnocování logických součtů a součinů.. 66 3.11 Bitové operace.......................... 67 3.11.1 Bitový součin....................... 68 3.11.2 Bitový součet....................... 69 3.11.3 Negace bit po bitu.................... 70 3.11.4 Bitový exkluzivní součet................ 71 3.11.5 Operace bitového posunu doleva........... 71 3.11.6 Operace bitového posunu doprava znaménkově... 71 3.11.7 Operace bitového posunu doprava neznaménkově. 72 3.12 Priority vyhodnocování operátorů............... 73 4 Terminálový vstup a výstup 76 4.1 Formátovaný výstup pomocí System.out.print()..... 76 4.2 Komplexní řešení výstupu................... 79 4.2.1 Výpis celého čísla v desítkové soustavě........ 81

Obsah 7 4.2.2 Výpis celého čísla v jiných soustavách........ 83 4.2.3 Výpis znaku....................... 83 4.2.4 Výpis reálného čísla................... 83 4.2.5 Výpis řetězce....................... 84 4.3 Formátovaný vstup....................... 85 4.3.1 Základní způsoby čtení................. 85 4.4 Problém vyprázdnění vstupu................. 87 5 Řídicí struktury 92 5.1 Příkaz if a příkaz if else.................. 92 5.1.1 Neúplná podmínka................... 92 5.1.2 Úplná podmínka..................... 93 5.2 Podmíněný výraz ternární operátor............. 94 5.3 Návěští.............................. 96 5.4 Příkazy break a continue................... 97 5.5 Iterační příkazy cykly.................... 97 5.5.1 Příkaz while....................... 97 5.5.2 Příkaz do while..................... 99 5.5.3 Příkaz for........................ 100 5.6 Příkaz switch.......................... 106 5.7 Příkaz return.......................... 111 6 Metody 114 6.1 Deklarace metody........................ 115 6.2 Metoda bez parametrů..................... 116 6.3 Metoda bez návratového typu procedura.......... 117 6.3.1 Procedura bez parametrů............... 117 6.4 Metoda s více parametry různých typů............ 118 6.5 Rekurzivní metody....................... 119 6.6 Konverze skutečných parametrů a návratové hodnoty metody120 6.7 Způsoby předávání skutečných parametrů metod...... 121 6.8 Přetížené metody........................ 121 6.9 Místa deklarací metod..................... 123

8 Obsah 6.10 Proměnné z pohledu místa deklarace............. 124 6.10.1 Nelokální proměnné globální proměnné..... 124 6.10.2 Proměnné metod lokální proměnné......... 126 6.10.3 Zastínění nelokálních proměnných lokálními.... 127 7 Pole 129 7.1 Pojem referenční datový typ.................. 129 7.2 Deklarace pole.......................... 130 7.3 Délka pole............................ 131 7.4 Inicializované pole........................ 132 7.5 Speciality při práci s poli.................... 133 7.5.1 Průchod všemi prvky pole............... 133 7.5.2 Výpis celého pole najednou.............. 134 7.5.3 Seřazení pole....................... 134 7.6 Dvourozměrná pole....................... 135 7.6.1 Inicializace dvourozměrného pole........... 136 7.7 Trojrozměrná pole........................ 136 7.8 Více rozměrů v jednorozměrném poli............. 137 8 Třídy a objekty základní dovednosti 139 8.1 Deklarace třídy......................... 140 8.2 Vytvoření objektu........................ 141 8.3 Přímý přístup k datům objektu................ 142 8.4 Práce s metodami........................ 142 8.5 Konstruktory........................... 144 8.5.1 Implicitní konstruktor................. 147 8.6 Využití this pro přístup k proměnným............ 147 8.7 Přetížení metod a konstruktorů................ 148 8.8 Využití this pro přístup ke konstruktoru.......... 150 8.9 Volání metod jinými metodami téže třídy nebo konstruktorem151 8.10 Použití proměnné třídy v objektech.............. 151 8.11 Použití statických metod v objektech............. 154 8.11.1 Použití statické metody ze třídy z Java Core API.. 154

Obsah 9 8.11.2 Použití statické metody z téže třídy.......... 156 8.12 Inicializace proměnných třídy................. 158 8.13 Rušení objektů.......................... 160 8.14 Ukončení práce s objekty.................... 161 9 Řetězce a znaky 165 9.1 Vytvoření řetězce........................ 166 9.1.1 Inicializované pole řetězců............... 167 9.2 Práce s celými řetězci...................... 167 9.2.1 Porovnávání....................... 167 9.2.2 Převody na malá či velká písmena.......... 168 9.2.3 Spojení řetězců..................... 169 9.2.4 Náhrada všech znaků v řetězci............ 169 9.3 Práce s částí řetězce....................... 169 9.3.1 Získání části řetězce.................. 169 9.3.2 Práce se začátkem a koncem řetězce......... 170 9.3.3 Oříznutí bílých znaků na okrajích.......... 170 9.4 Práce s jednotlivými znaky řetězce.............. 171 9.4.1 Získání znaku...................... 171 9.4.2 Hledání znaku...................... 171 9.5 Konverze základních datových typů na řetězec....... 172 9.5.1 Tisk do řetězce...................... 173 9.6 Konverze řetězce na základní datové typy.......... 174 9.7 Vyvolání více metod jedním příkazem............ 175 9.8 Dělení řetězce na části pomocí split()........... 175 9.8.1 Základní použití..................... 176 9.8.2 Použití regulárních výrazů............... 178 9.9 Metoda tostring()....................... 180 9.10 Třída StringBuffer....................... 182 9.10.1 Vytvoření instance................... 182 9.10.2 Délka řetězce...................... 182 9.10.3 Změny celého řetězce.................. 183 9.10.4 Změny části řetězce................... 183

10 Obsah 9.10.5 Konverze na String................... 185 9.11 Třída Character práce s jednotlivými znaky....... 185 9.11.1 Rozpoznávání druhu znaků.............. 185 9.11.2 Změna velikosti písmene................ 186 9.11.3 Převod jednotlivých znaků na čísla.......... 187 10 Třídy a objekty pokračování 188 10.1 Modifikátory deklarace třídy.................. 188 10.1.1 Třídy s modifikátorem public............. 189 10.2 Kompozice objektů....................... 190 10.3 Autorizovaný přístup k datům................. 192 10.4 Pole objektů........................... 195 10.4.1 Pole objektů obalovacích tříd a automatické převody 197 10.5 Předávání skutečných parametrů metodám......... 198 10.5.1 Předávání primitivních datových typů........ 198 10.5.2 Předávání objektů.................... 200 10.5.3 Předávání polí jako skutečných parametrů metodám 202 10.5.4 Předávání vícerozměrných polí metodám...... 204 11 Dědičnost 206 11.1 Úvodní poznámky........................ 206 11.2 Realizace dědičnosti....................... 207 11.3 Problémy s neimplicitními konstruktory rodičovské třídy. 210 11.4 Nechceme, aby bylo možné metodu překrýt finální metody 211 11.5 Chceme, aby bylo nutné metodu překrýt abstraktní metody a třídy............................ 212 11.6 Nechceme, aby bylo možné třídu zdědit finální třídy... 214 11.7 Překrytí proměnné....................... 215 11.8 Zá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

Obsah 11 12 Balíky 228 12.1 Import balíků.......................... 229 12.1.1 Statický import balíků................. 230 12.2 Vytváření balíků......................... 232 12.2.1 Celosvětově platná konvence pro pojmenování... 234 12.3 Přístupová práva........................ 234 12.3.1 Specifikátor private.................. 235 12.3.2 Specifikátor protected................. 237 12.3.3 Specifikátor public................... 239 12.3.4 Specifikátor neuveden (je přátelský )........ 239 12.4 Při dědění nelze zeslabit přístupová práva.......... 240 13 Rozhraní (interface) 241 13.1 Konstrukce rozhraní...................... 242 13.2 Použití jednoho rozhraní.................... 243 13.3 Použití rozhraní jako typu referenční proměnné...... 244 13.4 Implementace více rozhraní jednou třídou.......... 245 13.5 Instance rozhraní může využívat jen metody rozhraní... 246 13.6 Implementované rozhraní se dědí beze změny....... 247 13.7 Dědění třídy a současná implementace rozhraní...... 248 13.8 Dědění rozhraní a konstanty rozhraní............ 250 13.9 Využití operátoru instanceof................. 251 14 Polymorfizmus 253 14.1 Využití abstraktní třídy..................... 254 14.2 Použití neabstraktních tříd.................. 257 14.3 Použití rozhraní......................... 259 15 Vnořené třídy 261 15.1 Vnitřní třídy........................... 262 15.1.1 Implementace rozhraní pomocí metody využívající vnitřní třídu....................... 263 15.1.2 Implementace rozhraní pomocí metody využívající anonymní vnitřní třídu................. 264

12 Obsah 15.1.3 Proměnná typu rozhraní využívající anonymní vnitřní třídu............................ 266 15.1.4 Vnitřní třída je vytvořená děděním.......... 267 16 Výjimky 269 16.1 Možné druhy výjimek...................... 270 16.1.1 Třída Error....................... 271 16.1.2 Třída RuntimeException................ 272 16.1.3 Třída Exception..................... 273 16.2 Způsoby ošetření výjimky................... 274 16.2.1 Předání výjimky výše deklarace výjimky..... 274 16.2.2 Kompletní ošetření výjimky.............. 276 16.2.3 Ošetření výjimky a následné předání výše...... 278 16.2.4 Naprosto nejhorší reakce na výjimku......... 279 16.2.5 Rozumná reakce na výjimku.............. 280 16.2.6 Elegantní reakce na výjimku............. 281 16.2.7 Výpis výjimky do okénka................ 282 16.3 Seskupování výjimek...................... 283 16.3.1 Postupná selekce výjimek............... 285 16.4 Vyvolání výjimky........................ 286 16.5 Vytvoření a použití vlastní výjimky.............. 287 16.6 Konstrukce try catch finally................ 289 16.6.1 Konstrukce try finally................ 291 17 Adresáře a soubory 293 17.1 Nezávislost na operačním systému.............. 293 17.2 Vytvoření instance třídy File................. 294 17.3 Vytvoření souboru nebo adresáře............... 295 17.4 Práce se souborem nebo adresářem.............. 296 17.5 Výpis adresáře.......................... 297 17.5.1 Selektivní výpis adresáře............... 298

Obsah 13 18 Čtení ze vstupů a zápis na výstupy 301 18.1 Proudy znaků a proudy bajtů................. 302 18.2 Dva různé typy tříd zděděných od základních tříd..... 303 18.2.1 Třídy pro práci se zařízeními............. 304 18.2.2 Třídy vlastností (filtrů)................. 304 18.3 Čtení ze souboru a zápis do souboru............. 305 18.3.1 Vstupy a výstupy znaků................ 305 18.3.2 Vstupy a výstupy bajtů................. 307 18.3.3 Další dovednosti se soubory.............. 308 18.3.4 Bezpečné zavírání souborů a řešení výjimek.... 309 18.4 Třídy vlastností......................... 312 18.4.1 Vlastnost: bufferování................. 313 18.4.2 Vlastnost: čtení po řádcích............... 313 18.4.3 Vlastnost: výběrové čtení po řádcích......... 314 18.4.4 Vlastnost: vrácení přečteného znaku........ 314 18.4.5 Vlastnost: formátování výstupu............ 315 18.4.6 Vlastnost: formátování výstupu s řádkovým bufferováním.......................... 316 18.4.7 Formátovaný vstup pomocí Scanner......... 316 18.4.8 Formátovaný vstup pomocí FileReader....... 318 18.4.9 Vlastnost: neformátovaný vstup a výstup základních datových typů................... 319 18.4.10Vlastnost: serializace objektů............. 321 18.4.11Seskupování vlastností................. 323 18.5 Vstup a výstup do paměti................... 324 18.6 Vstup a výstup do roury.................... 325 18.7 Soubory s přímým přístupem................. 327 19 Systémové akce 333 19.1 Parametry příkazové řádky.................. 333 19.2 Systémové atributy a zdroje.................. 335 19.2.1 Standardní vstupní a výstupní proudy........ 336 19.2.2 Systémové vlastnosti.................. 338

14 Obsah 19.3 Užitečné metody ze třídy System............... 341 19.3.1 Informace o čase..................... 341 19.3.2 Spuštění garbage collectoru.............. 342 19.3.3 Zjištění velikosti dostupné paměti.......... 343 19.3.4 Spuštění finalizeru................... 344 19.3.5 Násilné ukončení programu.............. 345 20 Vlákna 347 20.1 Třída Thread........................... 348 20.2 Spolupráce dvou vláken.................... 350 20.2.1 Vlákna se pravidelně střídají............. 353 20.2.2 Vlákna se střídají nepravidelně............ 354 20.3 Stavy vlákna a plánovací algoritmus............. 355 20.3.1 Stavy vlákna....................... 355 20.3.2 Priorita vlákna..................... 356 20.3.3 Sdílení času....................... 357 20.3.4 Praktické ověření plánování a priorit........ 357 20.4 Rozhraní Runnable....................... 358 20.5 Čekání na vstup či výstup................... 360 20.6 Synchronizace vláken...................... 362 20.6.1 Vlákno čeká trpělivě na konec jiného vlákna.... 362 20.6.2 Vlákno čeká netrpělivě na konec jiného vlákna... 363 20.6.3 Vlákno ukončí předčasně jiné vlákno......... 364 20.6.4 Vlákno je násilně probuzeno.............. 366 20.6.5 Kritické sekce synchronizované metody...... 367 20.6.6 Kritické sekce synchronizované bloky....... 369 20.6.7 Synchronizace časové posloupnosti vláken...... 370 20.7 Další informace o vláknech................... 376 20.7.1 Problematika hladovění a uváznutí.......... 376 20.7.2 Skupiny vláken..................... 377 20.7.3 Vlákna typu démon................... 377 Literatura 380 Rejstřík 381