Java. Przewodnik dla początkujących. Wydanie 9 - ebook
Java. Przewodnik dla początkujących. Wydanie 9 - ebook
Java cały czas dynamicznie się rozwija, a każda wersja przynosi nowe rozwiązania. Ten wszechstronny język pozwala na tworzenie stron WWW, aplikacji internetowych, aplikacji mobilnych i wysoko specjalistycznego oprogramowania dla przeróżnych urządzeń technicznych. Jest to możliwe między innymi dzięki licznym bibliotekom i narzędziom wspierającym proces kodowania. Mimo upływu lat Java wciąż pozostaje żywym i nowoczesnym językiem wybieranym przez profesjonalistów.
To dziewiąte wydanie znakomitego podręcznika programowania dla początkujących, starannie zaktualizowane i uzupełnione o informacje dotyczące Java Platform, Standard Edition 17. Książka rozpoczyna się od solidnej dawki wiedzy o kompilacji i uruchamianiu programu w Javie, słowach kluczowych i istotnych konstrukcjach w tym języku. Krok po kroku przedstawia kolejne, coraz bardziej zaawansowane zagadnienia dotyczące obiektów, dziedziczenia czy wyjątków, a także współbieżności, typów sparametryzowanych, wyrażeń lambda i modułów. Poszczególne partie materiału są bogato uzupełnione przykładami kodu z komentarzami, praktycznymi ćwiczeniami, testami sprawdzającymi, wskazówkami i dodatkowymi informacjami. Przejrzysty układ podręcznika, jasny i zrozumiały język dodatkowo ułatwia naukę.
W książce znajdziesz:
- treści dobrane pod kątem efektywnej i łatwej nauki
- eksperckie wskazówki i podpowiedzi
- praktyczne przykłady zastosowania nabytych umiejętności
- utrwalające wiedzę testy sprawdzające
- przykładowe kody uzupełnione zrozumiałymi komentarzami
Java: twórz, kompiluj i uruchamiaj najlepszy kod!
Spis treści
O autorze
O redaktorze merytorycznym
Wstęp
1. Podstawy Javy
- Historia i filozofia Javy
- Pochodzenie Javy
- Java a języki C i C++
- Wpływ Javy na Internet
- Magiczny kod bajtowy
- Coś więcej niż aplety
- Szybszy harmonogram udostępniania
- Terminologia Javy
- Programowanie obiektowe
- Hermetyzacja
- Polimorfizm
- Dziedziczenie
- Java Development Kit
- Pierwszy prosty program
- Wprowadzenie tekstu programu
- Kompilowanie programu
- Pierwszy program wiersz po wierszu
- Obsługa błędów składni
- Drugi prosty program
- Inne typy danych
- Przykład 1.1. Zamiana galonów na litry
- Dwie instrukcje sterujące
- Instrukcja if
- Pętla for
- Bloki kodu
- Średnik i pozycja kodu w wierszu
- Wcięcia
- Przykład 1.2. Ulepszony konwerter galonów na litry
- Słowa kluczowe języka Java
- Identyfikatory
- Biblioteki klas
- Test sprawdzający
2. Typy danych i operatory
- Dlaczego typy danych są tak ważne
- Typy proste
- Typy całkowite
- Typy zmiennoprzecinkowe
- Znaki
- Typ logiczny
- Przykład 2.1. Jak daleko uderzył piorun?
- Literały
- Literały szesnastkowe, ósemkowe i binarne
- Specjalne sekwencje znaków
- Literały łańcuchowe
- Zmienne
- Inicjalizacja zmiennej
- Dynamiczna inicjalizacja
- Zasięg deklaracji i czas istnienia zmiennych
- Operatory
- Operatory arytmetyczne
- Inkrementacja i dekrementacja
- Operatory relacyjne i logiczne
- Warunkowe operatory logiczne
- Operator przypisania
- Skrótowe operatory przypisania
- Konwersje typów w instrukcjach przypisania
- Rzutowanie typów niezgodnych
- Priorytet operatorów
- Przykład 2.2. Tabela prawdy dla operatorów logicznych
- Wyrażenia
- Konwersja typów w wyrażeniach
- Odstępy i nawiasy
- Test sprawdzający
3. Instrukcje sterujące
- Wprowadzanie znaków z klawiatury
- Instrukcja if
- Zagnieżdżanie instrukcji if
- Drabinka if-else-if
- Tradycyjna instrukcja switch
- Zagnieżdżanie instrukcji switch
- Przykład 3.1. Rozpoczynamy budowę systemu pomocy
- Pętla for
- Wariacje na temat pętli for
- Brakujące elementy
- Pętla nieskończona
- Pętle bez ciała
- Deklaracja zmiennych sterujących wewnątrz pętli
- Rozszerzona pętla for
- Pętla while
- Pętla do-while
- Przykład 3.2. Ulepszamy system pomocy
- Przerywanie pętli instrukcją break
- Zastosowanie break jako formy goto
- Zastosowanie instrukcji continue
- Przykład 3.3. Końcowa wersja systemu pomocy
- Pętle zagnieżdżone
- Test sprawdzający
4. Wprowadzenie do klas, obiektów i metod
- Podstawy klas
- Ogólna postać klasy
- Definiowanie klasy
- Jak powstają obiekty
- Referencje obiektów i operacje przypisania
- Metody
- Dodajemy metodę do klasy Vehicle
- Powrót z metody
- Zwracanie wartości
- Stosowanie parametrów
- Dodajemy sparametryzowaną metodę do klasy Vehicle
- Przykład 4.1. System pomocy jako klasa
- Konstruktory
- Konstruktory z parametrami
- Dodajemy konstruktor do klasy Vehicle
- Operator new
- Odzyskiwanie pamięci
- Słowo kluczowe this
- Test sprawdzający
5. Więcej typów danych i operatorów
- Tablice
- Tablice jednowymiarowe
- Przykład 5.1. Sortowanie tablicy
- Tablice wielowymiarowe
- Tablice dwuwymiarowe
- Tablice nieregularne
- Tablice o trzech i więcej wymiarach
- Inicjalizacja tablic wielowymiarowych
- Alternatywna składnia deklaracji tablic
- Przypisywanie referencji tablic
- Wykorzystanie składowej length
- Przykład 5.2. Klasa Queue
- Styl for-each pętli for
- Iteracje w tablicach wielowymiarowych
- Zastosowania rozszerzonej pętli for
- Łańcuchy znaków
- Tworzenie łańcuchów
- Operacje na łańcuchach
- Tablice łańcuchów
- Łańcuchy są niezmienne
- Stosowanie łańcuchów do sterowania instrukcją switch
- Wykorzystanie argumentów wywołania programu
- Stosowanie wnioskowania typów w zmiennych lokalnych
- Wnioskowanie typów zmiennych lokalnych w przypadku typów referencyjnych
- Stosowanie wnioskowania typów zmiennych lokalnych w pętlach
- Ograniczenia var
- Operatory bitowe
- Operatory bitowe AND, OR, XOR i NOT
- Operatory przesunięcia
- Skrótowe bitowe operatory przypisania
- Przykład 5.3. Klasa ShowBits
- Operator ?
- Test sprawdzający
6. Więcej o metodach i klasach
- Kontrola dostępu do składowych klasy
- Modyfikatory dostępu w Javie
- Przykład 6.1. Ulepszamy klasę Queue
- Przekazywanie obiektów do metod
- Sposób przekazywania argumentów
- Zwracanie obiektów
- Przeciążanie metod
- Przeciążanie konstruktorów
- Przykład 6.2. Przeciążamy konstruktor klasy Queue
- Rekurencja
- Słowo kluczowe static
- Bloki static
- Przykład 6.3. Algorytm Quicksort
- Klasy zagnieżdżone i klasy wewnętrzne
- Zmienne liczby argumentów
- Metody o zmiennej liczbie argumentów
- Przeciążanie metod o zmiennej liczbie argumentów
- Zmienna liczba argumentów i niejednoznaczność
- Test sprawdzający
7. Dziedziczenie
- Podstawy dziedziczenia
- Dostęp do składowych a dziedziczenie
- Konstruktory i dziedziczenie
- Użycie słowa kluczowego super do wywołania konstruktora klasy bazowej
- Użycie słowa kluczowego super do dostępu do składowych klasy bazowej
- Przykład 7.1. Tworzymy hierarchię klas Vehicle
- Wielopoziomowe hierarchie klas
- Kiedy wywoływane są konstruktory?
- Referencje klasy bazowej i obiekty klasy pochodnej
- Przesłanianie metod
- Przesłanianie metod i polimorfizm
- Po co przesłaniać metody?
- Zastosowanie przesłaniania metod w klasie TwoDShape
- Klasy abstrakcyjne
- Słowo kluczowe final
- final zapobiega przesłanianiu
- final zapobiega dziedziczeniu
- Użycie final dla zmiennych składowych
- Klasa Object
- Test sprawdzający
8. Pakiety i interfejsy
- Pakiety
- Definiowanie pakietu
- Wyszukiwanie pakietów i zmienna CLASSPATH
- Prosty przykład pakietu
- Pakiety i dostęp do składowych
- Przykład dostępu do pakietu
- Składowe chronione
- Import pakietów
- Biblioteka klas Java używa pakietów
- Interfejsy
- Implementacje interfejsów
- Referencje interfejsu
- Przykład 8.1. Tworzymy interfejs Queue
- Zmienne w interfejsach
- Interfejsy mogą dziedziczyć
- Domyślne metody interfejsów
- Podstawowe informacje o metodach domyślnych
- Praktyczny przykład metody domyślnej
- Problemy wielokrotnego dziedziczenia
- Stosowanie metod statycznych w interfejsach
- Stosowanie metod prywatnych w interfejsach
- Ostatnie uwagi o pakietach i interfejsach
- Test sprawdzający
9. Obsługa wyjątków
- Hierarchia wyjątków
- Podstawy obsługi wyjątków
- Słowa kluczowe try i catch
- Prosty przykład wyjątku
- Konsekwencje nieprzechwycenia wyjątku
- Wyjątki umożliwiają obsługę błędów
- Użycie wielu klauzul catch
- Przechwytywanie wyjątków klas pochodnych
- Zagnieżdżanie bloków try
- Generowanie wyjątku
- Powtórne generowanie wyjątku
- Klasa Throwable
- Klauzula finally
- Użycie klauzuli throws
- Trzy dodatkowe możliwości wyjątków
- Wyjątki wbudowane w Javę
- Tworzenie klas pochodnych wyjątków
- Przykład 9.1. Wprowadzamy wyjątki w klasie Queue
- Test sprawdzający
10. Obsługa wejścia i wyjścia
- Strumienie wejścia i wyjścia
- Strumienie bajtowe i strumienie znakowe
- Klasy strumieni bajtowych
- Klasy strumieni znakowych
- Strumienie predefiniowane
- Używanie strumieni bajtowych
- Odczyt wejścia konsoli
- Zapis do wyjścia konsoli
- Odczyt i zapis plików za pomocą strumieni bajtowych
- Odczyt z pliku
- Zapis w pliku
- Automatyczne zamykanie pliku
- Odczyt i zapis danych binarnych
- Przykład 10.1. Narzędzie do porównywania plików
- Pliki o dostępie swobodnym
- Strumienie znakowe
- Odczyt konsoli za pomocą strumieni znakowych
- Obsługa wyjścia konsoli za pomocą strumieni znakowych
- Obsługa plików za pomocą strumieni znakowych
- Klasa FileWriter
- Klasa FileReader
- Zastosowanie klas opakowujących do konwersji łańcuchów numerycznych
- Przykład 10.2. System pomocy wykorzystujący pliki
- Test sprawdzający
11. Programowanie wielowątkowe
- Podstawy wielowątkowości
- Klasa Thread i interfejs Runnable
- Tworzenie wątku
- Usprawnienie i dwie modyfikacje
- Przykład 11.1. Tworzymy klasę pochodną klasy Thread
- Tworzenie wielu wątków
- Jak ustalić, kiedy wątek zakończył działanie?
- Priorytety wątków
- Synchronizacja
- Synchronizacja metod
- Synchronizacja instrukcji
- Komunikacja międzywątkowa
- Przykład użycia metod wait() i notify()
- Wstrzymywanie, wznawianie i kończenie działania wątków
- Przykład 11.2. Wykorzystanie głównego wątku
- Test sprawdzający
12. Typy wyliczeniowe, automatyczne opakowywanie, adnotacje i inne zagadnienia
- Wyliczenia
- Podstawy wyliczeń
- Wyliczenia są klasami
- Metody values() i valueOf()
- Konstruktory, metody, zmienne instancji a wyliczenia
- Dwa ważne ograniczenia
- Typy wyliczeniowe dziedziczą po klasie Enum
- Przykład 12.1. Komputerowo sterowana sygnalizacja świetlna
- Automatyczne opakowywanie
- Typy opakowujące
- Podstawy automatycznego opakowywania
- Automatyczne opakowywanie i metody
- Automatyczne opakowywanie i wyrażenia
- Przestroga
- Import składowych statycznych
- Adnotacje (metadane)
- Prezentacja operatora instanceof
- Test sprawdzający
13. Typy sparametryzowane
- Podstawy typów sparametryzowanych
- Prosty przykład typów sparametryzowanych
- Parametryzacja dotyczy tylko typów obiektowych
- Typy sparametryzowane różnią się dla różnych argumentów
- Klasa sparametryzowana o dwóch parametrach
- Ogólna postać klasy sparametryzowanej
- Ograniczanie typów
- Stosowanie argumentów wieloznacznych
- Ograniczanie argumentów wieloznacznych
- Metody sparametryzowane
- Konstruktory sparametryzowane
- Interfejsy sparametryzowane
- Przykład 13.1. Sparametryzowana klasa Queue
- Typy surowe i tradycyjny kod
- Wnioskowanie typów i operator diamentowy
- Wnioskowanie typów zmiennych lokalnych a typy sparametryzowane
- Wymazywanie
- Błędy niejednoznaczności
- Ograniczenia związane z typami sparametryzowanymi
- Zakaz tworzenia instancji parametru typu
- Ograniczenia dla składowych statycznych
- Ograniczenia tablic sparametryzowanych
- Ograniczenia związane z wyjątkami
- Dalsze studiowanie typów sparametryzowanych
- Test sprawdzający
14. Wyrażenia lambda i referencje metod
- Przedstawienie wyrażeń lambda
- Podstawowe informacje o wyrażeniach lambda
- Interfejsy funkcyjne
- Wyrażenia lambda w działaniu
- Blokowe wyrażenia lambda
- Sparametryzowane interfejsy funkcyjne
- Przykład 14.1. Przekazywanie wyrażenia lambda jako argumentu
- Wyrażenia lambda i przechwytywanie zmiennych
- Zgłaszanie wyjątków w wyrażeniach lambda
- Referencje metod
- Referencje metod statycznych
- Referencje metod instancyjnych
- Referencje konstruktorów
- Predefiniowane interfejsy funkcyjne
- Test sprawdzający
15. Moduły
- Podstawowe informacje o modułach
- Przykład prostego modułu
- Kompilowanie i uruchamianie przykładowej aplikacji
- Dokładniejsze informacje o instrukcjach requires i exports
- java.base i moduły platformy
- Stary kod i moduł nienazwany
- Eksportowanie do konkretnego modułu
- Wymagania przechodnie
- Przykład 15.1. Eksperymenty z instrukcją requires transitive
- Stosowanie usług
- Podstawowe informacje o usługach i dostawcach usług
- Słowa kluczowe związane z usługami
- Przykład stosowania usług i modułów
- Dodatkowe cechy modułów
- Moduły otwarte
- Instrukcja opens
- requires static
- Dalsze samodzielne poznawanie modułów
- Test sprawdzający
16. Wyrażenia switch, rekordy oraz inne najnowsze możliwości języka
- Rozszerzenia switch
- Listy stałych
- Wprowadzanie wyrażenia switch i instrukcji yield
- Wprowadzenie strzałek do klauzul case
- Dokładniejsza prezentacja zapisu ze strzałką
- Przykład 16.1. Zastosowanie wyrażenia switch do określania strefy czasowej różnych miast
- Rekordy
- Podstawowe informacje o rekordach
- Tworzenie konstruktorów rekordów
- Tworzenie metod pobierających w rekordach
- Dopasowywanie wzorców z użyciem operatora instanceof
- Klasy i interfejsy zapieczętowane
- Klasy zapieczętowane
- Interfejsy zapieczętowane
- Kierunki rozwoju
- Test sprawdzający
17. Wprowadzenie do biblioteki Swing
- Pochodzenie i filozofia Swing
- Komponenty i kontenery
- Komponenty
- Kontenery
- Panele kontenerów szczytowych
- Menedżery układu
- Pierwszy program wykorzystujący Swing
- Pierwszy program Swing wiersz po wierszu
- Obsługa zdarzeń w Swing
- Zdarzenia
- Źródła zdarzeń
- Obiekty nasłuchujące
- Klasy zdarzeń i interfejsy obiektów nasłuchujących
- Komponent JButton
- Komponent JTextField
- Komponent JCheckBox
- Komponent JList
- Przykład 17.1. Porównywanie plików - aplikacja Swing
- Wykorzystanie anonimowych klas wewnętrznych lub wyrażeń lambda do obsługi zdarzeń
- Test sprawdzający
A. Rozwiązania testów sprawdzających
- Rozdział 1. Podstawy Javy
- Rozdział 2. Typy danych i operatory
- Rozdział 3. Instrukcje sterujące
- Rozdział 4. Wprowadzenie do klas, obiektów i metod
- Rozdział 5. Więcej typów danych i operatorów
- Rozdział 6. Więcej o metodach i klasach
- Rozdział 7. Dziedziczenie
- Rozdział 8. Pakiety i interfejsy
- Rozdział 9. Obsługa wyjątków
- Rozdział 10. Obsługa wejścia i wyjścia
- Rozdział 11. Programowanie wielowątkowe
- Rozdział 12. Typy wyliczeniowe, automatyczne opakowywanie, adnotacje i inne zagadnienia
- Rozdział 13. Typy sparametryzowane
- Rozdział 14. Wyrażenia lambda i referencje metod
- Rozdział 15. Moduły
- Rozdział 16. Wyrażenia switch, rekordy oraz inne najnowsze możliwości języka
- Rozdział 17. Wprowadzenie do biblioteki Swing
B. Komentarze dokumentacyjne
- Znaczniki javadoc
- @author
- {@code}
- @deprecated
- {@docRoot}
- @exception
- @hidden
- {@index}
- {@inheritDoc}
- {@link}
- {@linkplain}
- {@literal}
- @param
- @provides
- @return
- @see
- @since
- {@summary}
- @throws
- @uses
- {@value}
- @version
- Ogólna postać komentarza dokumentacyjnego
- Wynik działania programu javadoc
- Przykład użycia komentarzy dokumentacyjnych
C. Kompiluj i uruchamiaj proste programy w jednym kroku
D. Wprowadzenie do JShell
- Podstawy JShell
- Wyświetlanie, edycja i ponowne wykonywanie kodu
- Dodanie metody
- Utworzenie klasy
- Stosowanie interfejsu
- Przetwarzanie wyrażeń i wbudowane zmienne
- Importowanie pakietów
- Wyjątki
- Inne polecenia JShell
- Dalsze poznawanie możliwości JShell
E. Więcej słów kluczowych języka Java
- Modyfikatory transient i volatile
- strictfp
- assert
- Metody rodzime
- Inna postać this
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-289-0484-2 |
Rozmiar pliku: | 4,8 MB |