Spis treści
Wstęp
Rozdział 1. Wprowadzenie do Javy
Historia języka
Główne założenia języka
Prostota i obiektowość
Przenośność, bezpieczeństwo, niezawodność i wydajność
Wielowątkowość i rozproszenie
Interpretowalność i niezależność od architektury
Maszyna wirtualna Javy
Model pamięci
Pakiet instalacyjny
Rozdział 2. Pierwszy program
Witaj, świecie!
Zasady składni kodu źródłowego
Identyfikatory
Literały
Słowa kluczowe
Potencjalne problemy
Korzystanie z IDE
Rozdział 3. Zmienne
Tworzenie zmiennych
Prymitywne typy danych
byte
short
int
long
float
double
Rzutowanie liczb zmiennoprzecinkowych na typy całkowite
Utrata precyzji w obliczeniach zmiennoprzecinkowych
char
boolean
Rozdział 4. Operatory
Operatory arytmetyczne
Operatory przypisania
Operatory logiczne
Operatory bitowe
Kolejność wykonywania operatorów
Rozdział 5. Instrukcje sterujące
Instrukcja if-else
Instrukcja switch
Pętle
Pętla while
Pętla do-while
Pętla for
Pętla for-each
Przerwania pętli
Instrukcja continue
Instrukcja break
Etykiety pętli
Rozdział 6. Tablice
Deklaracja tablicy
Operowanie na tablicy
Konstrukcja algorytmów opartych na tablicach
Obliczanie liczby wystąpień liczb dodatnich i ujemnych w tablicy
Obliczanie średniej z liczb w tablicy
Obliczanie liczby wielkich i małych liter alfabetu w tablicy
Sprawdzanie, czy znaki zawarte w tablicy tworzą palindrom
Tablice wielowymiarowe
Tablica dwuwymiarowa
Tablica trójwymiarowa
Rozdział 7. Paradygmat programowania zorientowanego obiektowo
Klasy i obiekty
Pakiety i importy
Modyfikatory widoczności
Atrybuty i metody
Tworzenie obiektów
Enkapsulacja
Konstruktory
Typ wyliczeniowy enum
Dziedziczenie
Klasy abstrakcyjne
Interfejsy
Polimorfizm
Rozdział 8. Klasy – zaawansowane możliwości
Przeładowanie metod
Zmienna liczba i kolejność argumentów
Varargs
Dopasowanie wersji metody do przekazanego argumentu
Przekazywanie argumentów przez wartość i referencję
Przekazywanie argumentów przez wartość
Przekazywanie argumentów przez referencję
Statyczne składowe klas
Zastosowanie
Statyczne stałe
Bloki kodu
Instancyjny blok inicjalizacyjny
Statyczny blok inicjalizacyjny
Porównanie bloków
Klasy zagnieżdżone
Klasa wewnętrzna
Klasa lokalna
Klasa anonimowa
Klasa zagnieżdżona statyczna
Rekordy
Refleksja
Klasa opisująca klasę – java.lang.Class
Reflection API
Zabawki w służbie refleksji
Podsumowanie
Adnotacje
Wbudowane adnotacje
Tworzenie adnotacji
Parametry adnotacji
Użycie adnotacji
Podsumowanie
Rzutowanie zmiennych obiektowych
Rzutowanie w dół
Rzutowanie w górę
Operator instanceof
Rzutowanie – błędy kompilacji
Rozdział 9. Wbudowane typy obiektowe
Typy opakowaniowe
Tworzenie zmiennych typu opakowaniowego
Operacje na duuużych liczbach
BigInteger
BigDecimal
Klasa String
Pula stringów – String Literal Pool
Niemodyfikowalność napisów
API klasy String
StringBuilder i StringBuffer
API klas StringBuilder
StringBuilder append()
StringBuilder insert(int offset, .)
StringBuilder delete(int startIndex, int endIndex)
StringBuilder reverse()
int capacity()
Rozdział 10. Wyjątki
Jak programować bez użycia wyjątków?
Pierwsze zetknięcie z wyjątkiem
Co to jest wyjątek?
Definiowanie klas wyjątków
Wbudowane klasy wyjątków
Wyjątki sprawdzalne i niesprawdzalne na etapie kompilacji
Wyjątki sprawdzalne
Wyjątki niesprawdzalne
Rzucanie wyjątków
Instrukcja throws
Instrukcja throw
Łapanie wyjątków
Klauzula try-catch
Łapanie wielu typów wyjątków
Łapanie wyjątków powiązanych dziedziczeniem
Deklaracja w throws najogólniejszego typu wyjątku
Blok finally
Wyjątki a dziedziczenie metod
Zawężanie listy wyjątków w podklasie
Rozszerzane listy wyjątków w podklasie
Klauzula try-with-resources
Przykład z użyciem wyjątków
Rozdział 11. Klasa Object
Object clone()
Płytka kopia
Głęboka kopia
boolean equals(Object obj)
Implementacja standardowa metody equals()
Implementacja equals() z wykorzystaniem klasy Objects
Przykład wywołania equals()
Zasady działania equals()
int hashCode()
Implementacja standardowa metody hashCode()
Implementacja hashCode() z wykorzystaniem klasy Objects
Przykład wywołania hashCode()
Konsekwencje nieodpowiedniego nadpisania metody hashCode()
Kontrakt pomiędzy equals() a hashCode()
String toString()
Implementacja domyślna toString()
Nadpisanie toString()
void notify(), notifyAll(), wait(.)
void finalize()
Wady metody finalize()
Rozdział 12. Typy generyczne
O co chodzi z błędami rzutowania?
Parametry generyczne
Wiele parametrów generycznych
Rozszerzanie typów generycznych
Zawężanie typu parametrów
Błędy kompilacji
Metody generyczne
Wildcards – generyczne argumenty w metodach
Ograniczenie typu parametru „z góry”
Przykład z kolekcją typu Car
Przykład z kolekcją typu Book
Ograniczenie typów parametrów „z dołu”
Rozdział 13. Który obiekt jest większy?
Interfejs Comparable
Porównywanie rosnąco
Porównywanie malejąco
Porównywanie na podstawie więcej niż jednej zmiennej
Zasady porównywania obiektów
Interfejs Comparator
Różnice pomiędzy Comparable a Comparator
Kiedy użyć Comparable?
Kiedy użyć Comparator?
Rozdział 14. Kolekcje
Interfejs Collection
Listy
ArrayList
LinkedList
Vector
Stack
ArrayDeque
Kolejki
PriorityQueue
Zbiory
HashSet
LinkedHashSet
TreeSet
Iteratory
Mapy
HashMap
LinkedHashMap
TreeMap
Operacje narzędziowe
Kolekcje niemodyfikowalne
Algorytmy
Rozdział 15. Paradygmat programowania funkcyjnego
Interfejs funkcyjny
Tworzenie interfejsu funkcyjnego
Wyrażenia lambda
Wbudowane interfejsy funkcyjne
Function
BiFunction
UnaryOperator
BinaryOperator
Predicate
Consumer
Supplier
Comparator
Referencje do metod
Referencja do metody statycznej
Referencja do metody instancyjnej obiektu
Referencja do metody instancyjnej typu
Referencja do konstruktora
Rozdział 16. Przetwarzanie strumieniowe
Interfejs Stream
Tworzenie strumienia
Operacje pośrednie i kończące
Stream API
Operacje pośrednie
Operacje kończące
Strumienie numeryczne
Współbieżne przetwarzanie strumieni
Przykład strumienia współbieżnego
Współbieżny dostęp do zasobu
Klasa Optional
Rozdział 17. I/O – wejście-wyjście programu
Reprezentacja pliku – klasa File
Ścieżka względna i bezwzględna
Określanie ścieżki w zależności od systemu operacyjnego
Operowanie na pliku
Metadane pliku
Strumienie wejścia-wyjścia
Strumienie bajtów
Strumienie znaków
RandomAccessFile
Serializacja
Wyłączenie z serializacji – słowo kluczowe transient
Serializacja obiektu zagnieżdżonego w obiekcie
Pakiet NIO
Bufory
Kanały
Selektory
Pakiet NIO 2
Path
Paths
Files
Rozdział 18. Kalendarz, data i czas
Jak w Javie reprezentowany jest czas
Kalendarz
Klasa Calendar
Klasa TimeZone
Klasa Locale
Klasa GregorianCalendar
Data i czas
Reprezentowanie daty do wersji 1.7 Javy
Reprezentowanie daty od wersji 1.8 Javy
Rozdział 19. Podstawy programowania współbieżnego
Proces a wątek
Wątek główny
Cykl życia wątku
NEW
RUNNABLE
BLOCKED, WAITING, TIMED_WAITING
TERMINATED
Tworzenie wątku
Klasa Thread
Interfejs Runnable
Synchronizacja wątków
Wyścig wątków
Atomowość operacji
Słowo kluczowe synchronized
Monitor
Słowo kluczowe volatile
Komunikacja między wątkami
Zakleszczenie wątków
Rozwiązanie problemu zakleszczenia wątków
Kolekcje bezpieczne w środowisku wielowątkowym
Rozdział 20. Podstawy JDBC
Komponenty
Nawiązywanie połączenia z bazą danych
Connection
DriverManager
DataSource
Zapytania
Statement
PreparedStatement
CallableStatement
Mapowanie ResultSet na kolekcję
Skorowidz
Opinie
Na razie nie ma opinii o produkcie.