Ke knize jsou zdrojové soubory!
Kniha Učebnice jazyka Java nám byla pro začátky doporučena učitelem Javy na ČVUT, a byl to opravdu dobrý výběr. Pavel Herout vysvětluje Javu na jednoduchých příkladech, takže by měla být srozumitelná i opravdovým začátečníkům. Cvičení v knize už tak jednoduchá nejsou :-). Tuto knihu DOPORUČUJI!
Pokud máte problémy a nevíte, jak Javu spustit, tak odpověď byste měli nalézt v mých poznámkách u knihy Java pro zelenáče.
Některé příklady z knihy
- příklad na zrcadlová slova
Pavel Herout: Učebnice jazyka Java:
Obsah knihy:
- Předmluva k aktuálnímu vydání
- Úvod k prvnímu vydání z roku 2000
- Základní pojmy
- Základní dovednosti v Javě
- Terminálový vstup a výstup
- Řídící struktury
- Metody
- Pole
- Třídy a objekty - základní dovednosti
- Řetězce a znaky
- Třídy a objekty - pokračování
- Dědičnost
- Balíky
- Rozhraní (interface)
- Polymorfizmus
- Vnořené třídy
- Výjimky
- Adresáře a soubory
- Čtení ze vstupů a výpis na výstupy
- Systémové akce
- Vlákna
- Literatura
- Rejstřík
Zde je podrobný obsah:
- Předmluva k aktuálnímu vydání
- Úvod k prvnímu vydání z roku 2000
- Typografické a syntaktické konvence
- Základní pojmy
- Trocha historie nikoho nezabije
- Způsob zpracování programu v Javě
- Různé typy programů
- Vývojové nástroje a jejich verze
- Vývoj a verze JDK
- Používané pojmy
- Java Core API
- Java Platforma
- Technologie hot-spot a JIT kompilátor
- Co byste měli vědět, než skutečně začnete programovat
- Jak přeložit a spustit program
- Běžné problémy
- Základní dovednosti v Javě
- Komentáře
- Způsob zápisu identifikátorů
- Anotace
- Hlavní program
- Základní datové typy
- Celočíselné typy a jejich konstanty
- Znakový typ a jeho konstanty
- Řetězcové konstanty (literály)
- Logický typ a jeho konstanty
- Reálné datové typy a jejich konstanty
- Deklarace proměnných
- Deklarace proměnných s konstantní hodnotou
- Deklarace výčtového typu
- Operátor přiřazení
- Operátor přetypování
- Rozšiřující konverze
- Zužující konverze
- Rozšiřující konverze se ztrátou přesnosti
- Aritmetické výrazy
- Unární operátory
- Binární operátory
- Přiřazovací operátory
- Relační operátory
- Zkrácené vyhodnocování logických součtů a součinů
- Úplné vyhodnocování logických součtů a součinů
- Bitové operace
- Bitový součin
- Bitový součet
- Negace bit po bitu
- Bitový exkluzivní součet
- Operace bitového posunu doleva
- Operace bitového posunu doprava znaménkově
- Operace bitového posunu doprava neznaménkově
- Priority vyhodnocování operátorů
- Terminálový vstup a výstup
- Formátovaný výstupu pomocí System.out.print()
- Komplexní řešení výstupu
- Výpis celého čísla v desítkové soustavě
- Výpis celého čísla v jiných soustavách
- Výpis znaku
- Výpis reálného čísla
- Výpis řetězce
- Formátovaný vstup
- Základní způsoby čtení
- Problém vyprázdnění vstupu
- Řídící struktury
- Příkaz if a příkaz if-else
- Neúplná podmínka
- Úplná podmínka
- Podmíněný výraz - ternární operátor
- Návěští
- Příkazy break a continue
- Iterační příkazy - cykly
- Příkaz while
- Příkaz do-while
- Příkaz for
- Příkaz switch
- Příkaz return
- Příkaz if a příkaz if-else
- Metody
- Deklarace metody
- Metoda bez parametrů
- Metoda bez návratového typu - procedura
- Procedura bez parametrů
- Metoda s více parametry různých typů
- Rekurzivní metody
- Konverze skutečných parametrů a návratové hodnoty metody
- Způsoby předávání skutečných parametrů metod
- Přetížené metody
- Místa deklarací metody
- Proměnné z pohledu místa deklarace
- Nelokální proměnné - "globální" proměnné
- Proměnné metod - lokální proměnné
- Zastínění nelokálních proměnných lokálními
- Pole
- Pojem referenční datový dyp
- Deklarace pole
- Délka pole
- Inicializované pole
- Speciality při práci s poli
- Průchod všemi prvky pole
- Výpis celého pole najednou
- Seřazení pole
- Dvourozměrné pole
- Inicializace dvourozměrného pole
- Trojrozměrná pole
- Více rozměrů v jednorozměrném poli
- Třídy a objekty - základní dovednosti
- Deklarace třídy
- Vytvoření objektu
- Přímý přístup k datům objektu
- Práce s metodami
- Konstruktory
- Implicitní konstuktor
- Využití this pro přístup k proměnným
- Přetížení metod a konstuktorů
- Využití this pro přístup ke konstruktoru
- Volání metod jinými metodami téže třídy nebo konstuktorem
- Použití proměnné třídy v objektech
- Použití statických metod v objektech
- Použití statických metod ze třídy z Java Core API
- Použití statické metody z téže třídy
- Inicializace proměnných třídy
- Rušení objektů
- Ukončení práce s objekty
- Řetězce a znaky
- Vytvoření řetězce
- Inicializované pole řetězců
- Pole s celými řetězci
- Porovnávání
- Převody na malá či velká písmena
- Spojení řetězců
- Náhrada všech znaků v řetězci
- Práce s částí řetězce
- Získání části řetězce
- Práce se začátkem a koncem řetězce
- Oříznutí bílých znaků na okrajích
- Práce s jednotlivými znaky řetězce
- Získání znaku
- Hledání znaku
- Konverze základních datových typů na řetězec
- Tisk do řetězce
- Konverze řetězce na základní datové typy
- Vyvolání více metod jedním příkazem
- Dělení řetězce na části pomocí split()
- Základní použití
- Použití regulárních výrazů
- Metoda toStrint()
- Třída StringBuffer
- Vytvoření instance
- Délka řetězce
- Změny celého řetězce
- Změny části řetězce
- Konverze na String
- Třída Character - práce s jednotlivými znaky
- Rozpoznávání druhu znaků
- Změna velikosti písmene
- Převod jednotlivých znaků na čísla
- Vytvoření řetězce
- Třídy a objekty - pokračování
- Modifikátory deklarace třídy
- Třídy s modifikátorem public
- Kompozice objektů
- Autorizovaný přístup k datům
- Pole objektů
- Pole objektů obalovacích tříd a automatické převody
- Předávání skutečných parametrů metodám
- Předávání primitivních datových typů
- Předávání objektů
- Předávání polí jako skutečných parametrů metodám
- Předávání vícerozměrných polí metodám
- Modifikátory deklarace třídy
- Dědičnost
- Úvodní poznámky
- Realizace dědičnosti
- Problémy s neimplicitními konstuktory rodičovské třídy
- Nechceme, aby bylo možné metodu překrýt - abstraktní metody a třídy
- Nechceme, aby bylo možné metodu zdědit - finální třídy
- Překrytí proměnné
- Základem je Object
- Metoda clone()
- Metoda equals()
- Metoda hashCode()
- Metoda getClass()
- Balíky
- Import balíků
- Statický import balíků
- Vytvoření balíků
- Celosvětově platná konvence pro pojmenování
- Přístupová práva
- Specifikátor private
- Specifikátor protected
- Specifikátor public
- Specifikátor neuveden (je "přátelský")
- Při dědění nelze zeslabit přístupová práva
- Import balíků
- Rozhraní (interface)
- Konstrukce rozhraní
- Použití jednoho rozhraní
- Použití rozhraní jako typu referenční proměnné
- Implementace více rozhraní jednou třídou
- Instance rozhraní může využívat jen metody rozhraní
- Implementované rozhraní se dědí beze změny
- Dědění třídy a současná implementace rozraní
- Dědění rozhraní a konstanty rozhraní
- Využití operátoru instanceof
- Polymorfizmus
- Využití abstraktní třídy
- Použití neabstraktních tříd
- Použití rozhraní
- Vnořené třídy
- Vnitřní třídy
- Implementace rozhraní pomocí metody využívající vnitřní třídu
- Implementace rozhraní pomocí metody využívající vnitřní anonymní vnitřní třidu
- Proměnná typu rozhraní využívající anonymní vnitřní třídu
- Vnitřní třída je vytvořená děděním
- Vnitřní třídy
- Výjimky
- Možné druhy výjimek
- Třída Error
- Třída RuntimeException
- Třída Exception
- Způsoby ošetření výjimky
- Předání výjimky výše - deklarace výjimky
- Kompletní ošetření výjimky
- Ošetření výjimky a následné předání výše
- Naprosto nejhorší reakce na výjimku
- Rozumná reakce na výjimku
- Výpis výjimky do okénka
- Seskupování výjimek
- Postupná selekce výjimek
- Vyvolání výjimky
- Vytvoření a použití vlastní výjimky
- Konstrukce try-catch-finally
- Konstrukce try-finally
- Možné druhy výjimek
- Adresáře a soubory
- Nezávislost na operačním systému
- Vytvoření instance třídy File
- Vytvoření souboru nebo adresáře
- Práce se souborem nebo adresářem
- Výpis adresáře
- Selektivní výpis adresáře
- Čtení ze vstupů a výpis na výstupy
- Proudy znaků a proudy bajtů
- Dva různé typy tříd zděděných od základních tříd
- Třídy pro práci se zařízeními
- Třídy vlastností (filtrů)
- Čtení ze souboru a zápis do souboru
- Vstupy a výstupy znaků
- Vstupy a výstupy bajtů
- Další dovednosti se soubory
- Bezpečné zavírání souborů a řešení výjimek
- Třídy vlastností
- Vlastnost: bufferování
- Vlastnost: čtení po řádcích
- Vlastnost: výběrové čtení po řádcích
- Vlastnost: vrácení přečteného znaku
- Vlastnost: formátování výstupu
- Vlastnost: formátování výstupu s řádkovým bufferováním
- Formátovaný vstup pomocí Scanner
- Formátovaný vstup pomocí FileReader
- Vlastnost: neformátovaný vstup a výstup základních datových typů
- Seskupování vlastností
- Vstup a výstup do paměti
- Vstup a výstup do roury
- Soubory s přímým přístupem
- Systémové akce
- Parametry příkazové řádky
- Systémové atributy a zdroje
- Standardní vstupní a výstupní proudy
- Systémové vlastnosti
- Užitečné metody ze třídy System
- Informace o čase
- Spuštění garbage collectoru
- Zjištění velikosti dostupné paměti
- Spuštění finalizeru
- Násilné ukončení programu
- Vlákna
- Třída Thread
- Spolupráce dvou vláken
- Vlákna se pravidelně střídají
- Vlákna se střídají nepravidelně
- Stavy vlákna a plánovací algoritmus
- Stavy vlákna
- Priority vlákna
- Sdílení času
- Praktické ověření plánování a priorit
- Rozhraní Runnable
- Čekání na vstup či výstup
- Synchronizace vláken
- Vlákno čeká trpělivě na konec jiného vlákna
- Vlákno čeká netrpělivě na konec jiného vlákna
- Vlákno ukončí předčasně jiné vlákno
- Vlákno je násilně probuzeno
- Kritické sekce - synchronizované metody
- Kritické sekce - synchronizované bloky
- Synchronizace časové posloupnosti vláken
- Další informace o vláknech
- Problematika hladovění a uváznutí
- Skupiny vláken
- Vlákna typu démon
- Literatura
- Rejstřík
Též by měla být dobrá pro začátečníky kniha Java 7 - výukový kurz.