Ява. Справочник программиста. 12-е издание
Товар
- 0 раз купили
- 4.9 оценка
- 2 осталось
- 82 отзыва
Доставка
Характеристики
Описание
Java. Kompendium programisty. Wydanie XII
Herbert Schildt
Mimo upływu lat Java wciąż pozostaje jednym z najważniejszych języków programowania, konsekwentnie wybieranym przez profesjonalnych deweloperów. Jest równocześnie nowoczesna i dojrzała. Twórcy Javy od początku jej istnienia stawiali na elastyczność i stale dostosowywali ten język do zmieniających się warunków pracy programistów. Od pierwszego wydania Java zapewnia narzędzia do programowania rozwiązań internetowych, jest więc naturalnym wyborem programistów tworzących aplikacje internetowe. Jej możliwości jednak są o wiele większe - i rosną z każdą kolejną wersją. Konieczne jest więc sukcesywne zapoznawanie się z nowościami i ze zmianami wprowadzanymi w poszczególnych wydaniach Java SE.
Ta książka jest jedenastym wydaniem wyczerpującego kompendium programisty Javy, w pełni zaktualizowanym, uzupełnionym o nowości wprowadzone w Java SE 11. Opisuje język kompleksowo: jego składnię, słowa kluczowe oraz najistotniejsze zasady programowania. Zawiera także informacje o najważniejszych składnikach biblioteki Javy, takich jak klasy wejścia-wyjścia, framework Collections, biblioteka strumieni oraz narzędzia programowania współbieżnego. Oczywiście szczegółowo został tu opisany inny niezwykle ważny element - system modułów Javy. Przedstawiono też interaktywne narzędzie programistyczne JShell. Podręcznik jest przejrzysty, napisany jasnym i zrozumiałym językiem, co zdecydowanie ułatwia naukę. Co ważne, poszczególne zagadnienia zilustrowano licznymi przykładowymi fragmentami kodu źródłowego. Z tak przygotowanego materiału skorzystają wszyscy programiści Javy, zarówno początkujący, jak i profesjonalni deweloperzy.
W tej książce między innymi:
- zasady programowania obiektowego
- klasy wejścia-wyjścia oraz obsługa wyjątków
- interfejsy i pakiety
- wnioskowanie typów zmiennych lokalnych
- obsługa zdarzeń, moduły i wyrażenia lambda
- AWT, Swing, JavaBean i serwlety
Nie znajdziesz bardziej wyczerpującego omówienia Javy!
O autorze
Herb Schildt - jest jednym z najpopularniejszych autorów książek o programowaniu. Jest autorytetem w sprawach języków C, C++, Java i C#, a także doskonałym programistą systemu Windows. Był członkiem komitetu ANSI/ISO, który dokonał standaryzacji języka C++. Jego książki sprzedały się na całym świecie w ponad 3 milionach egzemplarzy i zostały przetłumaczone na większość języków.
Spis treści
O autorze 23
O redaktorze merytorycznym 24
Przedmowa 25
CZĘŚĆ I. JĘZYK JAVA
1. Historia i ewolucja języka Java 31
- Rodowód Javy 31
Narodziny nowoczesnego języka - C 31
Język C++ - następny krok 33
Podwaliny języka Java 33
- Powstanie języka Java 33
Powiązanie z językiem C# 35
- Jak Java wywarła wpływ na internet 35
Aplety Javy 35
Bezpieczeństwo 36
Przenośność 36
- Magia języka Java - kod bajtowy 37
- Wychodząc poza aplety 38
- Szybszy harmonogram udostępniania 38
- Serwlety - Java po stronie serwera 39
- Hasła języka Java 39
Prostota 40
Obiektowość 40
Niezawodność 40
Wielowątkowość 40
Neutralność architektury 41
Interpretowalność i wysoka wydajność 41
Rozproszenie 41
Dynamika 41
- Ewolucja Javy 41
- Kultura innowacji 46
2. Podstawy języka Java 47
- Programowanie obiektowe 47
Dwa paradygmaty 47
Abstrakcja 48
Trzy zasady programowania obiektowego 48
- Pierwszy przykładowy program 52
Wpisanie kodu programu 52
Kompilacja programów 53
Bliższe spojrzenie na pierwszy przykładowy program 53
- Drugi prosty program 55
- Dwie instrukcje sterujące 56
Instrukcja if 57
Pętla for 58
- Bloki kodu 59
- Kwestie składniowe 60
Znaki białe 60
Identyfikatory 60
Stałe 60
Komentarze 61
Separatory 61
Słowa kluczowe języka Java 61
- Biblioteki klas Javy 62
3. Typy danych, zmienne i tablice 63
- Java to język ze ścisłą kontrolą typów 63
- Typy proste 63
- Typy całkowitoliczbowe 64
Typ byte 64
Typ short 65
Typ int 65
Typ long 65
- Typy zmiennoprzecinkowe 65
Typ float 66
Typ double 66
- Typ znakowy 66
- Typ logiczny 68
- Bliższe spojrzenie na stałe 68
Stałe całkowitoliczbowe 68
Stałe zmiennoprzecinkowe 69
Stałe logiczne 70
Stałe znakowe 70
Stałe łańcuchowe 71
- Zmienne 71
Deklaracja zmiennej 71
Inicjalizacja dynamiczna 72
Zasięg i czas życia zmiennych 72
- Konwersja typów i rzutowanie 74
Automatyczna konwersja typów 74
Rzutowanie niezgodnych typów 75
- Automatyczne rozszerzanie typów w wyrażeniach 76
Zasady rozszerzania typu 76
- Tablice 77
Tablice jednowymiarowe 77
Tablice wielowymiarowe 79
Alternatywna składnia deklaracji tablicy 82
- Wnioskowanie typów zmiennych lokalnych 83
Ograniczenia var 85
- Kilka słów o łańcuchach 85
4. Operatory 87
- Operatory arytmetyczne 87
Podstawowe operatory arytmetyczne 88
Operator reszty z dzielenia 88
Operatory arytmetyczne z przypisaniem 89
Inkrementacja i dekrementacja 90
- Operatory bitowe 91
Logiczne operatory bitowe 92
Przesunięcie w lewo 94
Przesunięcie w prawo 95
Przesunięcie w prawo bez znaku 96
Operatory bitowe z przypisaniem 97
- Operatory relacji 98
- Operatory logiczne 99
Operatory logiczne ze skracaniem 100
- Operator przypisania 101
- Operator ? 101
- Kolejność wykonywania operatorów 102
- Stosowanie nawiasów okrągłych 102
5. Instrukcje sterujące 105
- Instrukcje wyboru 105
Instrukcja if 105
Instrukcja switch 108
- Instrukcje iteracyjne 111
Pętla while 112
Pętla do-while 113
Pętla for 115
Wersja for-each pętli for 118
Wnioskowanie typów zmiennych lokalnych w pętlach 122
Pętle zagnieżdżone 123
- Instrukcje skoku 123
Instrukcja break 124
Instrukcja continue 127
Instrukcja return 128
6. Wprowadzenie do klas 129
- Klasy 129
Ogólna postać klasy 129
Prosta klasa 130
- Deklarowanie obiektów 132
Bliższe spojrzenie na operator new 133
- Przypisywanie zmiennych referencyjnych do obiektów 133
- Wprowadzenie do metod 134
Dodanie metody do klasy Box 134
Zwracanie wartości 136
Dodanie metody przyjmującej parametry 137
- Konstruktor 139
Konstruktor sparametryzowany 140
- Słowo kluczowe this 141
Ukrywanie zmiennych składowych 141
- Mechanizm odzyskiwania pamięci 142
- Klasa stosu 142
7. Dokładniejsze omówienie metod i klas 145
- Przeciążanie metod 145
Przeciążanie konstruktorów 147
- Obiekty jako parametry 149
- Dokładniejsze omówienie przekazywania argumentów 151
- Zwracanie obiektów 152
- Rekurencja 153
- Wprowadzenie do kontroli dostępu 155
- Składowe statyczne 158
- Słowo kluczowe final 159
- Powtórka z tablic 160
- Klasy zagnieżdżone i klasy wewnętrzne 161
- Omówienie klasy String 164
- Wykorzystanie argumentów wiersza poleceń 165
- Zmienna liczba argumentów 166
Przeciążanie metod o zmiennej liczbie argumentów 169
Zmienna liczba argumentów i niejednoznaczności 170
- Stosowanie wnioskowania typów zmiennych lokalnych z typami referencyjnymi 171
8. Dziedziczenie 173
- Podstawy dziedziczenia 173
Dostęp do składowych a dziedziczenie 174
Bardziej praktyczny przykład 175
Zmienna klasy bazowej może zawierać referencję do obiektu klasy pochodnej 177
- Słowo kluczowe super 178
Wykorzystanie słowa kluczowego super do wywołania konstruktora klasy bazowej 178
Drugie zastosowanie słowa kluczowego super 181
- Tworzenie hierarchii wielopoziomowej 182
- Kiedy są wykonywane konstruktory? 184
- Przesłanianie metod 185
- Dynamiczne przydzielanie metod 187
Dlaczego warto przesłaniać metody? 188
Zastosowanie przesłaniania metod 188
- Klasy abstrakcyjne 190
- Słowo kluczowe final i dziedziczenie 192
Słowo kluczowe final zapobiega przesłanianiu 192
Słowo kluczowe final zapobiega dziedziczeniu 193
- Wnioskowanie typów zmiennych lokalnych a dziedziczenie 193
- Klasa Object 195
9. Pakiety i interfejsy 197
- Pakiety 197
Definiowanie pakietu 197
Znajdowanie pakietów i ścieżka CLASSPATH 198
Prosty przykład pakietu 199
- Dostęp do pakietów i składowych 199
Przykład dostępu 200
- Import pakietów 203
- Interfejsy 204
Definiowanie interfejsu 205
Implementacja interfejsu 206
Interfejsy zagnieżdżone 208
Stosowanie interfejsów 209
Zmienne w interfejsach 211
Interfejsy można rozszerzać 213
- Metody domyślne 214
Podstawy metod domyślnych 215
Bardziej praktyczny przykład 216
Problemy wielokrotnego dziedziczenia 217
- Metody statyczne w interfejsach 217
- Stosowanie metod prywatnych w interfejsach 218
- Ostatnie uwagi dotyczące pakietów i interfejsów 219
10. Obsługa wyjątków 221
- Podstawy obsługi wyjątków 221
- Typy wyjątków 222
- Nieprzechwycone wyjątki 222
- Stosowanie instrukcji try i catch 223
Wyświetlenie opisu wyjątku 224
- Wiele klauzul catch 225
- Zagnieżdżone instrukcje try 226
- Instrukcja throw 228
- Klauzula throws 229
- Słowo kluczowe finally 229
- Wyjątki wbudowane w język Java 231
- Tworzenie własnej klasy pochodnej wyjątków 231
- Łańcuch wyjątków 234
- Trzy dodatkowe cechy wyjątków 235
- Wykorzystanie wyjątków 236
11. Programowanie wielowątkowe 237
- Model wątków języka Java 238
Priorytety wątków 239
Synchronizacja 239
Przekazywanie komunikatów 240
Klasa Thread i interfejs Runnable 240
- Wątek główny 240
- Tworzenie wątku 242
Implementacja interfejsu Runnable 242
Rozszerzanie klasy Thread 244
Wybór odpowiedniego podejścia 244
- Tworzenie wielu wątków 245
- Stosowanie metod isAlive() i join() 246
- Priorytety wątków 248
- Synchronizacja 249
Synchronizacja metod 249
Instrukcja synchronized 251
- Komunikacja międzywątkowa 252
Zakleszczenie 256
- Zawieszanie, wznawianie i zatrzymywanie wątków 258
- Uzyskiwanie stanu wątku 260
- Stosowanie metody wytwórczej do tworzenia i uruchamiania wątku 261
- Korzystanie z wielowątkowości 262
12. Wyliczenia, automatyczne opakowywanie typów prostych i adnotacje 263
- Typy wyliczeniowe 263
Podstawy wyliczeń 263
Metody values() i valueOf() 265
Wyliczenia Javy jako typy klasowe 266
Wyliczenia dziedziczą po klasie Enum 268
Inny przykład wyliczenia 269
- Opakowania typów 271
Klasa Character 271
Klasa Boolean 271
Opakowania typów numerycznych 272
- Automatyczne opakowywanie typów prostych 273
Automatyczne opakowywanie i metody 274
Automatyczne opakowywanie i rozpakowywanie w wyrażeniach 274
Automatyczne opakowywanie typów znakowych i logicznych 276
Automatyczne opakowywanie pomaga zapobiegać błędom 276
Słowo ostrzeżenia 277
- Adnotacje 277
Podstawy tworzenia adnotacji 278
Określanie strategii zachowywania adnotacji 278
Odczytywanie adnotacji w trakcie działania programu za pomocą refleksji 279
Interfejs AnnotatedElement 283
Wartości domyślne 283
Adnotacje znacznikowe 285
Adnotacje jednoelementowe 285
Wbudowane adnotacje 287
- Adnotacje typów 288
- Adnotacje powtarzalne 292
- Ograniczenia 294
13. Wejście-wyjście, instrukcja try z zasobami i inne tematy 295
- Podstawowa obsługa wejścia i wyjścia 295
Strumienie 296
Strumienie znakowe i bajtowe 296
Predefiniowane strumienie 298
- Odczyt danych z konsoli 298
Odczyt znaków 298
Odczyt łańcuchów 299
- Wyświetlanie informacji na konsoli 301
- Klasa PrintWriter 301
- Odczyt i zapis plików 302
- Automatyczne zamykanie pliku 307
- Modyfikatory transient i volatile 310
- Operator instanceof 311
- Modyfikator strictfp 313
- Metody napisane w kodzie rdzennym 313
- Stosowanie asercji 313
Opcje włączania i wyłączania asercji 315
- Import statyczny 316
- Wywoływanie przeciążonych konstruktorów za pomocą this() 318
- Kilka słów o kompaktowych profilach API 320
14. Typy sparametryzowane 321
- Czym są typy sparametryzowane? 321
- Prosty przykład zastosowania typów sparametryzowanych 322
Typy sparametryzowane działają tylko dla typów referencyjnych 325
Typy sparametryzowane różnią się, jeśli mają inny argument typu 325
W jaki sposób typy sparametryzowane zwiększają bezpieczeństwo? 325
- Klasa sparametryzowana z dwoma parametrami typu 327
- Ogólna postać klasy sparametryzowanej 328
- Typy ograniczone 328
- Zastosowanie argumentów wieloznacznych 330
Ograniczony argument wieloznaczny 333
- Tworzenie metody sparametryzowanej 337
Konstruktory sparametryzowane 338
- Interfejsy sparametryzowane 339
- Typy surowe i starszy kod 341
- Hierarchia klas sparametryzowanych 343
Zastosowanie sparametryzowanej klasy bazowej 343
Podklasa sparametryzowana 345
Porównywanie typów w hierarchii klas sparametryzowanych w czasie wykonywania 346
Rzutowanie 348
Przesłanianie metod w klasach sparametryzowanych 348
- Wnioskowanie typów a typy sparametryzowane 349
- Wnioskowanie typów zmiennych lokalnych a typy sparametryzowane 350
- Znoszenie 350
Metody mostu 351
- Błędy niejednoznaczności 352
- Pewne ograniczenia typów sparametryzowanych 353
Nie można tworzyć egzemplarza parametru typu 353
Ograniczenia dla składowych statycznych 354
Ograniczenia tablic typów sparametryzowanych 354
Ograniczenia wyjątków typów sparametryzowanych 355
15. Wyrażenia lambda 357
- Wprowadzenie do wyrażeń lambda 357
Podstawowe informacje o wyrażeniach lambda 358
Interfejsy funkcyjne 358
Kilka przykładów wyrażeń lambda 359
- Blokowe wyrażenia lambda 362
- Sparametryzowane interfejsy funkcyjne 364
- Przekazywanie wyrażeń lambda jako argumentów 365
- Wyrażenia lambda i wyjątki 368
- Wyrażenia lambda i przechwytywanie zmiennych 369
- Referencje do metod 370
Referencje do metod statycznych 370
Referencje do metod instancyjnych 371
Referencje do metod a typy sparametryzowane 374
- Referencje do konstruktorów 376
- Predefiniowane interfejsy funkcyjne 380
16. Moduły 383
- Podstawowe informacje o modułach 383
Przykład prostego modułu 384
Kompilowanie i uruchamianie przykładowej aplikacji 388
Dokładniejsze informacje o instrukcjach requires i exports 389
- java.base i moduły platformy 390
- Stary kod i moduł nienazwany 390
- Eksportowanie do konkretnego modułu 391
- Wymagania przechodnie 392
- Stosowanie usług 396
Podstawowe informacje o usługach i dostawcach usług 396
Słowa kluczowe związane z usługami 397
Przykład stosowania usług i modułów 397
- Grafy modułów 403
- Trzy wyspecjalizowane cechy modułów 404
Moduły otwarte 404
Instrukcja opens 404
Instrukcja requires static 404
- Wprowadzenie do jlink i plików JAR modułów 405
Dołączanie plików dostarczonych jako struktura katalogów 405
Konsolidacja modularnych plików JAR 405
Pliki JMOD 406
- Kilka słów o warstwach i modułach automatycznych 406
- Końcowe uwagi dotyczące modułów 407
CZĘŚĆ II. BIBLIOTEKA JĘZYKA JAVA
17. Obsługa łańcuchów 411
- Konstruktory klasy String 411
- Długość łańcucha 413
- Specjalne operacje na łańcuchach 413
Literały tekstowe 413
Konkatenacja łańcuchów 414
Konkatenacja łańcuchów z innymi typami danych 414
Konwersja łańcuchów i metoda toString() 415
- Wyodrębnianie znaków 416
Metoda charAt() 416
Metoda getChars() 416
Metoda getBytes() 416
Metoda toCharArray() 417
- Porównywanie łańcuchów 417
Metody equals() i equalsIgnoreCase() 417
Metoda regionMatches() 418
Metody startsWith() i endsWith() 418
Metoda equals() kontra operator == 418
Metoda compareTo() 419
- Przeszukiwanie łańcuchów 420
- Modyfikowanie łańcucha 421
Metoda substring() 421
Metoda concat() 422
Metoda replace() 422
Metody trim() i strip() 423
- Konwersja danych za pomocą metody valueOf() 424
- Zmiana wielkości liter w łańcuchu 424
- Łączenie łańcuchów 425
- Dodatkowe metody klasy String 425
- Klasa StringBuffer 426
Konstruktory klasy StringBuffer 427
Metody length() i capacity() 427
Metoda ensureCapacity() 427
Metoda setLength() 428
Metody charAt() i setCharAt() 428
Metoda getChars() 428
Metoda append() 429
Metoda insert() 429
Metoda reverse() 430
Metody delete() i deleteCharAt() 430
Metoda replace() 431
Metoda substring() 431
Dodatkowe metody klasy StringBuffer 431
- Klasa StringBuilder 432
18. Pakiet java.lang 433
- Opakowania typów prostych 433
Klasa Number 434
Klasy Double i Float 434
Metody isInfinite() i isNan() 437
Klasy Byte, Short, Integer i Long 437
Klasa Character 445
Dodatki wprowadzone w celu obsługi punktów kodowych Unicode 446
Klasa Boolean 449
- Klasa Void 449
- Klasa Process 450
- Klasa Runtime 451
Zarządzanie pamięcią 452
Wykonywanie innych programów 453
- Runtime.Version 453
- Klasa ProcessBuilder 455
- Klasa System 457
Wykorzystanie metody currentTimeMillis() do obliczania czasu wykonywania programu 458
Użycie metody arraycopy() 459
Właściwości środowiska 459
- Interfejs System.Logger i klasa System.LoggerFinder 460
- Klasa Object 460
- Wykorzystanie metody clone() i interfejsu Cloneable 460
- Klasa Class 462
- Klasa ClassLoader 465
- Klasa Math 465
Funkcje trygonometryczne 465
Funkcje wykładnicze 466
Funkcje zaokrągleń 466
Inne metody klasy Math 467
- Klasa StrictMath 469
- Klasa Compiler 469
- Klasy Thread i ThreadGroup oraz interfejs Runnable 469
Interfejs Runnable 469
Klasa Thread 470
Klasa ThreadGroup 472
- Klasy ThreadLocal i InheritableThreadLocal 475
- Klasa Package 475
- Klasa Module 476
- Klasa ModuleLayer 477
- Klasa RuntimePermission 477
- Klasa Throwable 477
- Klasa SecurityManager 477
- Klasa StackTraceElement 477
- Klasa StackWalker i interfejs StackWalker.StackFrame 478
- Klasa Enum 478
- Klasa ClassValue 479
- Interfejs CharSequence 479
- Interfejs Comparable 480
- Interfejs Appendable 480
- Interfejs Iterable 480
- Interfejs Readable 481
- Interfejs AutoCloseable 481
- Interfejs Thread.UncaughtExceptionHandler 481
- Podpakiety pakietu java.lang 481
Podpakiet java.lang.annotation 482
Podpakiet java.lang.instrument 482
Podpakiet java.lang.invoke 482
Podpakiet java.lang.management 482
Podpakiet java.lang.module 482
Podpakiet java.lang.ref 482
Podpakiet java.lang.reflect 482
19. Pakiet java.util, część 1. - kolekcje 483
- Wprowadzenie do kolekcji 484
- Interfejsy kolekcji 485
Interfejs Collection 486
Interfejs List 488
Interfejs Set 489
Interfejs SortedSet 490
Interfejs NavigableSet 490
Interfejs Queue 491
Interfejs Deque 492
- Klasy kolekcji 493
Klasa ArrayList 494
Klasa LinkedList 497
Klasa HashSet 498
Klasa LinkedHashSet 499
Klasa TreeSet 499
Klasa PriorityQueue 501
Klasa ArrayDeque 501
Klasa EnumSet 502
- Dostęp do kolekcji za pomocą iteratora 502
Korzystanie z iteratora Iterator 504
Pętla typu for-each jako alternatywa dla iteratora 505
- Spliteratory 506
- Przechowywanie w kolekcjach własnych klas 509
- Interfejs RandomAccess 510
- Korzystanie z map 510
Interfejsy map 510
Klasy map 516
- Komparatory 520
Wykorzystanie komparatora 522
- Algorytmy kolekcji 526
- Klasa Arrays 531
- Starsze klasy i interfejsy 535
Interfejs Enumeration 535
Klasa Vector 536
Klasa Stack 539
Klasa Dictionary 540
Klasa Hashtable 541
Klasa Properties 544
Wykorzystanie metod store() i load() 547
- Ostatnie uwagi na temat kolekcji 548
20. Pakiet java.util, część 2. - pozostałe klasy użytkowe 549
- Klasa StringTokenizer 549
- Klasa BitSet 551
- Klasy Optional, OptionalDouble, OptionalInt oraz OptionalLong 553
- Klasa Date 556
- Klasa Calendar 557
- Klasa GregorianCalendar 560
- Klasa TimeZone 561
- Klasa SimpleTimeZone 562
- Klasa Locale 563
- Klasa Random 564
- Klasy Timer i TimerTask 566
- Klasa Currency 568
- Klasa Formatter 569
Konstruktory klasy Formatter 570
Metody klasy Formatter 570
Podstawy formatowania 570
Formatowanie łańcuchów i znaków 573
Formatowanie liczb 573
Formatowanie daty i godziny 574
Specyfikatory %n i %% 575
Określanie minimalnej szerokości pola 576
Określanie precyzji 577
Używanie znaczników (flag) formatów 578
Wyrównywanie danych wyjściowych 578
Znaczniki spacji, plusa, zera i nawiasów 579
Znacznik przecinka 580
Znacznik # 580
Opcja wielkich liter 580
Stosowanie indeksu argumentu 581
Zamykanie obiektu klasy Formatter 582
Metoda printf() w Javie 582
- Klasa Scanner 582
Konstruktory klasy Scanner 583
Podstawy skanowania 584
Kilka przykładów użycia klasy Scanner 587
Ustawianie separatorów 590
Pozostałe elementy klasy Scanner 591
- Klasy ResourceBundle, ListResourceBundle i PropertyResourceBundle 592
- Dodatkowe klasy i interfejsy użytkowe 596
- Podpakiety pakietu java.util 597
java.util.concurrent, java.util.concurrent.atomic oraz java.util.concurrent.locks 598
java.util.function 598
java.util.jar 600
java.util.logging 600
java.util.prefs 600
java.util.regex 600
java.util.spi 601
java.util.stream 601
java.util.zip 601
21. Operacje wejścia-wyjścia: analiza pakietu java.io 603
- Klasy i interfejsy obsługujące operacje wejścia-wyjścia 604
- Klasa File 604
Katalogi 607
Stosowanie interfejsu FilenameFilter 608
Alternatywna metoda listFiles() 609
Tworzenie katalogów 609
- Interfejsy AutoCloseable, Closeable i Flushable 609
- Wyjątki operacji wejścia-wyjścia 610
- Dwa sposoby zamykania strumieni 610
- Klasy strumieni 611
- Strumienie bajtów 612
Klasa InputStream 612
Klasa OutputStream 613
Klasa FileInputStream 613
Klasa FileOutputStream 615
Klasa ByteArrayInputStream 617
Klasa ByteArrayOutputStream 618
Filtrowane strumienie bajtów 620
Buforowane strumienie bajtów 620
Klasa SequenceInputStream 623
Klasa PrintStream 625
Klasy DataOutputStream i DataInputStream 627
Klasa RandomAccessFile 628
- Strumienie znaków 629
Klasa Reader 629
Klasa Writer 629
Klasa FileReader 629
Klasa FileWriter 631
Klasa CharArrayReader 632
Klasa CharArrayWriter 633
Klasa BufferedReader 634
Klasa BufferedWriter 636
Klasa PushbackReader 636
Klasa PrintWriter 637
- Klasa Console 638
- Serializacja 639
Interfejs Serializable 640
Interfejs Externalizable 640
Interfejs ObjectOutput 640
Klasa ObjectOutputStream 641
Interfejs ObjectInput 642
Klasa ObjectInputStream 642
Przykład serializacji 643
- Korzyści wynikające ze stosowania strumieni 645
22. System NIO 647
- Klasy systemu NIO 647
- Podstawy systemu NIO 648
Bufory 648
Kanały 648
Zestawy znaków i selektory 651
- Udoskonalenia dodane w systemie NIO.2 651
Interfejs Path 651
Klasa Files 651
Klasa Paths 654
Interfejsy atrybutów plików 655
Klasy FileSystem, FileSystems i FileStore 657
- Stosowanie systemu NIO 657
Stosowanie systemu NIO dla operacji wejścia-wyjścia na kanałach 658
Stosowanie systemu NIO dla operacji wejścia-wyjścia na strumieniach 666
Stosowanie systemu NIO dla operacji na ścieżkach i systemie plików 668
23. Obsługa sieci 675
- Podstawy działania sieci 675
- Klasy i interfejsy pakietu java.net obsługujące komunikację sieciową 676
- Klasa InetAddress 677
Metody wytwórcze 677
Metody klasy 678
- Klasy Inet4Address oraz Inet6Address 679
- Gniazda klientów TCP/IP 679
- URL 682
- Klasa URLConnection 683
- Klasa HttpURLConnection 685
- Klasa URI 687
- Pliki cookie 687
- Gniazda serwerów TCP/IP 688
- Datagramy 688
Klasa DatagramSocket 689
Klasa DatagramPacket 689
Przykład użycia datagramów 690
- Prezentacja pakietu java.net.http 692
Trzy kluczowe elementy 692
Prosty przykład użycia API klienta HTTP 695
Czego jeszcze warto dowiedzieć się o pakiecie java.net.http? 696
24. Obsługa zdarzeń 697
- Dwa mechanizmy obsługi zdarzeń 697
- Model obsługi zdarzeń oparty na ich delegowaniu 698
Zdarzenia 698
Źródła zdarzeń 698
Obiekty nasłuchujące zdarzeń 699
- Klasy zdarzeń 699
Klasa ActionEvent 701
Klasa AdjustmentEvent 701
Klasa ComponentEvent 702
Klasa ContainerEvent 702
Klasa FocusEvent 703
Klasa InputEvent 704
Klasa ItemEvent 704
- Klasa KeyEvent 705
Klasa MouseEvent 706
Klasa MouseWheelEvent 707
Klasa TextEvent 708
Klasa WindowEvent 708
- Źródła zdarzeń 709
- Interfejsy nasłuchujące zdarzeń 710
Interfejs ActionListener 711
Interfejs AdjustmentListener 711
Interfejs ComponentListener 711
Interfejs ContainerListener 711
Interfejs FocusListener 711
Interfejs ItemListener 711
Interfejs KeyListener 711
Interfejs MouseListener 712
Interfejs MouseMotionListener 712
Interfejs MouseWheelListener 712
Interfejs TextListener 712
Interfejs WindowFocusListener 712
Interfejs WindowListener 712
- Stosowanie modelu delegowania zdarzeń 713
Kluczowe zagadnienia tworzenia aplikacji graficznych z użyciem AWT 713
Obsługa zdarzeń generowanych przez mysz 714
Obsługa zdarzeń generowanych przez klawiaturę 717
- Klasy adapterów 720
- Klasy wewnętrzne 722
Anonimowa klasa wewnętrzna 724
25. Wprowadzenie do AWT: praca z oknami, grafiką i tekstem 727
- Klasy AWT 728
- Podstawy okien 730
Klasa Component 730
Klasa Container 730
Klasa Panel 730
Klasa Window 731
Klasa Frame 731
Klasa Canvas 731
- Praca z oknami typu Frame 731
Ustawianie wymiarów okna 731
Ukrywanie i wyświetlanie okna 732
Ustawianie tytułu okna 732
Zamykanie okna typu Frame 732
Metoda paint() 732
Wyświetlanie łańcuchów znaków 732
Określanie koloru tekstu i tła 733
Żądanie ponownego wyświetlenia zawartości okna 733
Tworzenie aplikacji korzystających z klasy Frame 734
- Wprowadzenie do stosowania grafiki 735
Rysowanie odcinków 735
Rysowanie prostokątów 735
Rysowanie elips, kół i okręgów 736
Rysowanie łuków 736
Rysowanie wielokątów 736
Prezentacja metod rysujących 737
Dostosowywanie rozmiarów obiektów graficznych 738
- Praca z klasą Color 739
Metody klasy Color 740
Ustawianie bieżącego koloru kontekstu graficznego 741
Program demonstrujący zastosowanie klasy Color 741
- Ustawianie trybu rysowania 742
- Praca z czcionkami 743
Określanie dostępnych czcionek 745
Tworzenie i wybieranie czcionek 746
Uzyskiwanie informacji o czcionkach 748
- Zarządzanie tekstowymi danymi wyjściowymi z wykorzystaniem klasy FontMetrics 749
26. Stosowanie kontrolek AWT, menedżerów układu graficznego oraz menu 753
- Podstawy kontrolek AWT 754
Dodawanie i usuwanie kontrolek 754
Odpowiadanie na zdarzenia kontrolek 754
Wyjątek HeadlessException 755
- Etykiety 755
- Stosowanie przycisków 756
Obsługa zdarzeń przycisków 757
- Stosowanie pól wyboru 760
Obsługa zdarzeń pól wyboru 761
- Klasa CheckboxGroup 762
- Kontrolki list rozwijanych 764
Obsługa zdarzeń list rozwijanych 765
- Stosowanie list 766
Obsługa zdarzeń generowanych przez listy 767
- Zarządzanie paskami przewijania 769
Obsługa zdarzeń generowanych przez paski przewijania 770
- Stosowanie kontrolek typu TextField 772
Obsługa zdarzeń generowanych przez kontrolkę TextField 773
- Stosowanie kontrolek typu TextArea 774
- Wprowadzenie do menedżerów układu graficznego komponentów 776
FlowLayout 777
BorderLayout 778
Stosowanie obramowań 779
GridLayout 781
Klasa CardLayout 782
Klasa GridBagLayout 785
- Menu i paski menu 789
- Okna dialogowe 794
- Przesłanianie metody paint() 797
27. Obrazy 799
- Formaty plików 799
- Podstawy przetwarzania obrazów: tworzenie, wczytywanie i wyświetlanie 800
Tworzenie obiektu obrazu 800
Ładowanie obrazu 800
Wyświetlanie obrazu 801
- Podwójne buforowanie 802
- Interfejs ImageProducer 804
Klasa MemoryImageSource 805
- Interfejs ImageConsumer 806
Klasa PixelGrabber 806
- Klasa ImageFilter 809
Klasa CropImageFilter 809
Klasa RGBImageFilter 810
- Dodatkowe klasy obsługujące obrazy 821
28. Narzędzia współbieżności 823
- Pakiety interfejsu Concurrent API 824
Pakiet java.util.concurrent 824
Pakiet java.util.concurrent.atomic 825
Pakiet java.util.concurrent.locks 825
- Korzystanie z obiektów służących do synchronizacji 825
Klasa Semaphore 825
Klasa CountDownLatch 830
CyclicBarrier 832
Klasa Exchanger 834
Klasa Phaser 835
- Korzystanie z egzekutorów 842
Przykład prostego egzekutora 842
Korzystanie z interfejsów Callable i Future 844
- Typ wyliczeniowy TimeUnit 846
- Kolekcje współbieżne 847
- Blokady 847
- Operacje atomowe 850
- Programowanie równoległe przy użyciu frameworku Fork/Join 851
Najważniejsze klasy frameworku Fork/Join 852
Strategia dziel i zwyciężaj 855
Prosty przykład użycia frameworku Fork/Join 855
Znaczenie poziomu równoległości 858
Przykład użycia klasy RecursiveTask 860
Asynchroniczne wykonywanie zadań 862
Anulowanie zadania 863
Określanie statusu wykonania zadania 863
Ponowne uruchamianie zadania 863
Pozostałe zagadnienia 863
Wskazówki dotyczące stosowania frameworku Fork/Join 865
- Pakiet Concurrency Utilities a tradycyjne metody języka Java 866
29. API strumieni 867
- Podstawowe informacje o strumieniach 867
Interfejsy strumieni 868
Jak można uzyskać strumień? 870
Prosty przykład stosowania strumieni 871
- Operacje redukcji 874
- Stosowanie strumieni równoległych 876
- Odwzorowywanie 878
- Tworzenie kolekcji 882
- Iteratory i strumienie 885
Stosowanie typu Iterator i strumieni 885
Stosowanie spliteratorów 886
- Inne możliwości API strumieni 889
30. Wyrażenia regularne i inne pakiety 891
- Przetwarzanie wyrażeń regularnych 891
Klasa Pattern 892
Klasa Matcher 892
Składnia wyrażeń regularnych 893
Przykład dopasowywania do wzorca 893
Dwie opcje dopasowywania do wzorca 898
Przegląd wyrażeń regularnych 898
- Refleksje 898
- Zdalne wywoływanie metod (RMI) 901
Prosta aplikacja typu klient-serwer wykorzystująca RMI 902
- Formatowanie dat i czasu przy użyciu pakietu java.text 905
Klasa DateFormat 905
Klasa SimpleDateFormat 906
- Interfejs API dat i czasu - java.time 908
Podstawowe klasy do obsługi dat i czasu 908
Formatowanie dat i godzin 910
Analiza łańcuchów zawierających daty i godziny 912
Inne możliwości pakietu java.time 913
CZĘŚĆ III. WPROWADZENIE DO PROGRAMOWANIA GUI PRZY UŻYCIU PAKIETU SWING
31. Wprowadzenie do pakietu Swing 917
- Geneza powstania biblioteki Swing 917
- Bibliotekę Swing zbudowano na bazie zestawu narzędzi AWT 918
- Podstawowe cechy biblioteki Swing 918
Komponenty biblioteki Swing są lekkie 918
Biblioteka Swing obsługuje dołączany wygląd i sposób obsługi 919
- Podobieństwo do architektury MVC 919
- Komponenty i kontenery 920
Komponenty 920
Kontenery 921
Panele kontenerów najwyższego poziomu 921
- Pakiety biblioteki Swing 922
- Prosta aplikacja na bazie biblioteki Swing 922
- Obsługa zdarzeń 926
- Rysowanie w bibliotece Swing 929
Podstawy rysowania 929
Wyznaczanie obszaru rysowania 930
Przykład rysowania 930
32. Przewodnik po pakiecie Swing 933
- Klasy JLabel i ImageIcon 933
- Klasa JTextField 935
- Przyciski biblioteki Swing 936
Klasa JButton 937
Klasa JToggleButton 939
Pola wyboru 940
Przyciski opcji 942
- Klasa JTabbedPane 944
- Klasa JScrollPane 946
- Klasa JList 948
- Klasa JComboBox 951
- Drzewa 953
- Klasa JTable 955
33. Wprowadzenie do systemu menu pakietu Swing 959
- Podstawy systemu menu 959
- Przegląd klas JMenuBar, JMenu oraz JMenuItem 961
Klasa JMenuBar 961
Klasa JMenu 962
Klasa JMenuItem 963
- Tworzenie menu głównego 963
- Dodawanie mnemonik i kombinacji klawiszy do opcji menu 967
- Dodawanie obrazów i etykiet ekranowych do menu 969
- Stosowanie klas JRadioButtonMenuItem i JCheckBoxMenuItem 970
- Tworzenie menu podręcznych 972
- Tworzenie paska narzędzi 974
- Stosowanie akcji 977
- Finalna postać programu MenuDemo 981
- Dalsze poznawanie pakietu Swing 987
CZĘŚĆ IV. STOSOWANIE JAVY W PRAKTYCE
34. Java Beans 991
- Czym jest komponent typu Java Bean? 991
- Zalety komponentów Java Beans 992
- Introspekcja 992
Wzorce właściwości 992
Wzorce projektowe dla zdarzeń 993
Metody i wzorce projektowe 994
Korzystanie z interfejsu BeanInfo 994
- Właściwości ograniczone 994
- Trwałość 995
- Interfejs Customizer 995
- Interfejs Java Beans API 995
Klasa Introspector 997
Klasa PropertyDescriptor 997
Klasa EventSetDescriptor 997
Klasa MethodDescriptor 997
- Przykład komponentu Java Bean 997
35. Serwlety 1001
- Podstawy 1001
- Cykl życia serwletu 1002
- Sposoby tworzenia serwletów 1002
- Korzystanie z serwera Tomcat 1003
- Przykład prostego serwletu 1004
Tworzenie i kompilacja kodu źródłowego serwletu 1004
Uruchamianie serwera Tomcat 1005
Uruchamianie przeglądarki i generowanie żądania 1005
- Interfejs Servlet API 1005
- Pakiet javax.servlet 1005
Interfejs Servlet 1006
Interfejs ServletConfig 1006
Interfejs ServletContext 1007
Interfejs ServletRequest 1007
Interfejs ServletResponse 1007
Klasa GenericServlet 1007
Klasa ServletInputStream 1007
Klasa ServletOutputStream 1009
Klasy wyjątków związanych z serwletami 1009
- Odczytywanie parametrów serwletu 1009
- Pakiet javax.servlet.http 1010
Interfejs HttpServletRequest 1011
Interfejs HttpServletResponse 1011
Interfejs HttpSession 1011
Klasa Cookie 1013
Klasa HttpServlet 1014
- Obsługa żądań i odpowiedzi HTTP 1014
Obsługa żądań GET protokołu HTTP 1014
Obsługa żądań POST protokołu HTTP 1016
- Korzystanie ze znaczników kontekstu użytkownika 1017
- Śledzenie sesji 1019
DODATKI
A. Komentarze dokumentujące 1023
- Znaczniki narzędzia javadoc 1023
Znacznik @author 1024
Znacznik {@code} 1024
Znacznik @deprecated 1025
Znacznik {@docRoot} 1025
Znacznik @exception 1025
Znacznik @hidden 1025
Znacznik {@index} 1025
Znacznik {@inheritDoc} 1025
Znacznik {@link} 1025
Znacznik {@linkplain} 1026
Znacznik {@literal} 1026
Znacznik @param 1026
Znacznik @provides 1026
Znacznik @return 1026
Znacznik @see 1026
Znacznik @serial 1026
Znacznik @serialData 1027
Znacznik @serialField 1027
Znacznik @since 1027
Znacznik {@summary} 1027
Znacznik @throws 1027
Znacznik @uses 1027
Znacznik {@value} 1027
Znacznik @version 1028
- Ogólna postać komentarzy dokumentacyjnych 1028
- Wynik działania narzędzia javadoc 1028
- Przykład korzystający z komentarzy dokumentacyjnych 1028
B. Wprowadzenie do JShell 1031
- Podstawy JShell 1031
- Wyświetlanie, edytowanie i ponowne wykonywanie kodu 1033
- Dodanie metody 1034
- Utworzenie klasy 1035
- Stosowanie interfejsu 1036
- Przetwarzanie wyrażeń i wbudowane zmienne 1037
- Importowanie pakietów 1037
- Wyjątki 1038
- Inne polecenia JShell 1038
- Dalsze poznawanie możliwości JShell 1039
C. Kompilowanie i uruchamianie prostych programów w jednym kroku 1041
Гарантии
Гарантии
Мы работаем по договору оферты и предоставляем все необходимые документы.
Лёгкий возврат
Если товар не подошёл или не соответсвует описанию, мы поможем вернуть его.
Безопасная оплата
Банковской картой, электронными деньгами, наличными в офисе или на расчётный счёт.