Description
Java jest ceniona przez programistów za dojrzałość i nowoczesność. Jako jeden z nielicznych języków miała zasadniczy wpływ na ewolucję programowania i określenie standardów tworzenia kodu. Cały czas jest dynamicznie rozwijana i od lat pozostaje w awangardzie innowacyjności. Na uwagę zasługuje wszechstronność Javy: to język, który pozwala na tworzenie stron WWW, aplikacji webowych, mobilnych oraz 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 bardzo mądrym wyborem dla przyszłych deweloperów.Ta książka jest ósmym wydaniem znakomitego podręcznika programowania dla początkujących, starannie zaktualizowanym i uzupełnionym o informacje dotyczące edycji 11. Zawiera podstawową wiedzę o kompilacji i uruchamianiu programu w Javie oraz o słowach kluczowych i istotnych konstrukcjach w tym języku – to na początek. Potem 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 oraz modułów. Poszczególne partie materiału zostały bogato uzupełnione przykładami kodu z komentarzami, jak również praktycznymi ćwiczeniami, testami sprawdzającymi, wskazówkami i dodatkowymi informacjami. Podręcznik jest przejrzysty, napisany jasnym i zrozumiałym językiem, co zdecydowanie ułatwia naukę.W tej książce między innymi:solidne podstawy Javy i programowania obiektowegooperacje wejścia-wyjścia oraz obsługa wyjątkówprogramowanie wielowątkowezagadnienia zaawansowane: wyrażenia lambda i referencje metodmoduły, usługi i biblioteka SwingJava: zdobądź kluczowe umiejętności i utrwal najlepsze nawyki programisty!Spis treści:O autorze 13O redaktorze merytorycznym 14Wstęp 151. Podstawy Javy 21Historia i filozofia Javy 22Pochodzenie Javy 22Java a języki C i C++ 23Wpływ Javy na Internet 23Magiczny kod bajtowy 25Coś więcej niż aplety 26Szybszy harmonogram udostępniania 27Terminologia Javy 27Programowanie obiektowe 27Hermetyzacja 29Polimorfizm 29Dziedziczenie 29Java Development Kit 30Pierwszy prosty program 31Wprowadzenie tekstu programu 31Kompilowanie programu 32Pierwszy program wiersz po wierszu 33Obsługa błędów składni 34Drugi prosty program 35Inne typy danych 37Przykład 1.1. Zamiana galonów na litry 38Dwie instrukcje sterujące 39Instrukcja if 39Pętla for 40Bloki kodu 41Średnik i pozycja kodu w wierszu 42Wcięcia 43Przykład 1.2. Ulepszony konwerter galonów na litry 43Słowa kluczowe języka Java 44Identyfikatory 45Biblioteki klas 45Test sprawdzający 462. Typy danych i operatory 47Dlaczego typy danych są tak ważne 47Typy proste 48Typy całkowite 48Typy zmiennoprzecinkowe 49Znaki 50Typ logiczny 51Przykład 2.1. Jak daleko uderzył piorun? 52Literały 53Literały szesnastkowe, ósemkowe i binarne 53Specjalne sekwencje znaków 53Literały łańcuchowe 54Zmienne 55Inicjalizacja zmiennej 55Dynamiczna inicjalizacja 55Zasięg deklaracji i czas istnienia zmiennych 56Operatory 58Operatory arytmetyczne 58Inkrementacja i dekrementacja 59Operatory relacyjne i logiczne 60Warunkowe operatory logiczne 62Operator przypisania 63Skrótowe operatory przypisania 63Konwersje typów w instrukcjach przypisania 64Rzutowanie typów niezgodnych 65Priorytet operatorów 67Przykład 2.2. Tabela prawdy dla operatorów logicznych 67Wyrażenia 68Konwersja typów w wyrażeniach 68Odstępy i nawiasy 70Test sprawdzający 703. Instrukcje sterujące 71Wprowadzanie znaków z klawiatury 71Instrukcja if 72Zagnieżdżanie instrukcji if 73Drabinka if-else-if 74Instrukcja switch 75Zagnieżdżanie instrukcji switch 78Przykład 3.1. Rozpoczynamy budowę systemu pomocy 78Pętla for 80Wariacje na temat pętli for 81Brakujące elementy 82Pętla nieskończona 83Pętle bez ciała 83Deklaracja zmiennych sterujących wewnątrz pętli 84Rozszerzona pętla for 85Pętla while 85Pętla do-while 86Przykład 3.2. Ulepszamy system pomocy 88Przerywanie pętli instrukcją break 90Zastosowanie break jako formy goto 91Zastosowanie instrukcji continue 95Przykład 3.3. Końcowa wersja systemu pomocy 96Pętle zagnieżdżone 99Test sprawdzający 994. Wprowadzenie do klas, obiektów i metod 101Podstawy klas 101Ogólna postać klasy 102Definiowanie klasy 102Jak powstają obiekty 105Referencje obiektów i operacje przypisania 105Metody 106Dodajemy metodę do klasy Vehicle 106Powrót z metody 108Zwracanie wartości 109Stosowanie parametrów 110Dodajemy sparametryzowaną metodę do klasy Vehicle 112Przykład 4.1. System pomocy jako klasa 113Konstruktory 117Konstruktory z parametrami 118Dodajemy konstruktor do klasy Vehicle 119Operator new 120Odzyskiwanie pamięci 120Słowo kluczowe this 121Test sprawdzający 1225. Więcej typów danych i operatorów 123Tablice 123Tablice jednowymiarowe 124Przykład 5.1. Sortowanie tablicy 126Tablice wielowymiarowe 128Tablice dwuwymiarowe 128Tablice nieregularne 129Tablice o trzech i więcej wymiarach 130Inicjalizacja tablic wielowymiarowych 130Alternatywna składnia deklaracji tablic 131Przypisywanie referencji tablic 131Wykorzystanie składowej length 132Przykład 5.2. Klasa Queue 134Styl for-each pętli for 137Iteracje w tablicach wielowymiarowych 139Zastosowania rozszerzonej pętli for 140Łańcuchy znaków 141Tworzenie łańcuchów 141Operacje na łańcuchach 142Tablice łańcuchów 144Łańcuchy są niezmienne 144Stosowanie łańcuchów do sterowania instrukcją switch 145Wykorzystanie argumentów wywołania programu 146Stosowanie wnioskowania typów w zmiennych lokalnych 147Wnioskowanie typów zmiennych lokalnych w przypadku typów referencyjnych 149Stosowanie wnioskowania typów zmiennych lokalnych w pętlach 150Ograniczenia var 151Operatory bitowe 152Operatory bitowe AND, OR, XOR i NOT 152Operatory przesunięcia 156Skrótowe bitowe operatory przypisania 157Przykład 5.3. Klasa ShowBits 158Operator ? 160Test sprawdzający 1616. Więcej o metodach i klasach 163Kontrola dostępu do składowych klasy 163Modyfikatory dostępu w Javie 164Przykład 6.1. Ulepszamy klasę Queue 167Przekazywanie obiektów do metod 168Sposób przekazywania argumentów 169Zwracanie obiektów 171Przeciążanie metod 173Przeciążanie konstruktorów 177Przykład 6.2. Przeciążamy konstruktor klasy Queue 178Rekurencja 181Słowo kluczowe static 182Bloki static 185Przykład 6.3. Algorytm Quicksort 186Klasy zagnieżdżone i klasy wewnętrzne 188Zmienne liczby argumentów 190Metody o zmiennej liczbie argumentów 191Przeciążanie metod o zmiennej liczbie argumentów 193Zmienna liczba argumentów i niejednoznaczność 194Test sprawdzający 1957. Dziedziczenie 197Podstawy dziedziczenia 197Dostęp do składowych a dziedziczenie 200Konstruktory i dziedziczenie 202Użycie słowa kluczowego super do wywołania konstruktora klasy bazowej 203Użycie słowa kluczowego super do dostępu do składowych klasy bazowej 207Przykład 7.1. Tworzymy hierarchię klas Vehicle 207Wielopoziomowe hierarchie klas 210Kiedy wywoływane są konstruktory? 212Referencje klasy bazowej i obiekty klasy pochodnej 213Przesłanianie metod 217Przesłanianie metod i polimorfizm 219Po co przesłaniać metody? 220Zastosowanie przesłaniania metod w klasie TwoDShape 221Klasy abstrakcyjne 224Słowo kluczowe final 227final zapobiega przesłanianiu 227final zapobiega dziedziczeniu 227Użycie final dla zmiennych składowych 228Klasa Object 229Test sprawdzający 2308. Pakiety i interfejsy 231Pakiety 231Definiowanie pakietu 232Wyszukiwanie pakietów i zmienna CLASSPATH 233Prosty przykład pakietu 233Pakiety i dostęp do składowych 234Przykład dostępu do pakietu 235Składowe chronione 236Import pakietów 238Biblioteka klas Java używa pakietów 239Interfejsy 239Implementacje interfejsów 241Referencje interfejsu 244Przykład 8.1. Tworzymy interfejs Queue 245Zmienne w interfejsach 249Interfejsy mogą dziedziczyć 250Domyślne metody interfejsów 251Podstawowe informacje o metodach domyślnych 252Praktyczny przykład metody domyślnej 253Problemy wielokrotnego dziedziczenia 254Stosowanie metod statycznych w interfejsach 255Stosowanie metod prywatnych w interfejsach 256Ostatnie uwagi o pakietach i interfejsach 257Test sprawdzający 2579. Obsługa wyjątków 259Hierarchia wyjątków 260Podstawy obsługi wyjątków 260Słowa kluczowe try i catch 260Prosty przykład wyjątku 261Konsekwencje nieprzechwycenia wyjątku 263Wyjątki umożliwiają obsługę błędów 264Użycie wielu klauzul catch 265Przechwytywanie wyjątków klas pochodnych 265Zagnieżdżanie bloków try 267Generowanie wyjątku 268Powtórne generowanie wyjątku 268Klasa Throwable 269Klauzula finally 271Użycie klauzuli throws 272Trzy dodatkowe możliwości wyjątków 273Wyjątki wbudowane w Javę 274Tworzenie klas pochodnych wyjątków 276Przykład 9.1. Wprowadzamy wyjątki w klasie Queue 278Test sprawdzający 28010. Obsługa wejścia i wyjścia 283Strumienie wejścia i wyjścia 284Strumienie bajtowe i strumienie znakowe 284Klasy strumieni bajtowych 284Klasy strumieni znakowych 284Strumienie predefiniowane 285Używanie strumieni bajtowych 286Odczyt wejścia konsoli 286Zapis do wyjścia konsoli 288Odczyt i zapis plików za pomocą strumieni bajtowych 289Odczyt z pliku 289Zapis w pliku 292Automatyczne zamykanie pliku 294Odczyt i zapis danych binarnych 297Przykład 10.1. Narzędzie do porównywania plików 299Pliki o dostępie swobodnym 300Strumienie znakowe 302Odczyt konsoli za pomocą strumieni znakowych 303Obsługa wyjścia konsoli za pomocą strumieni znakowych 305Obsługa plików za pomocą strumieni znakowych 306Klasa FileWriter 307Klasa FileReader 307Zastosowanie klas opakowujących do konwersji łańcuchów numerycznych 309Przykład 10.2. System pomocy wykorzystujący pliki 310Test sprawdzający 31611. Programowanie wielowątkowe 317Podstawy wielowątkowości 317Klasa Thread i interfejs Runnable 318Tworzenie wątku 319Usprawnienie i dwie modyfikacje 322Przykład 11.1. Tworzymy klasę pochodną klasy Thread 325Tworzenie wielu wątków 327Jak ustalić, kiedy wątek zakończył działanie? 330Priorytety wątków 332Synchronizacja 335Synchronizacja metod 335Synchronizacja instrukcji 338Komunikacja międzywątkowa 340Przykład użycia metod wait() i notify() 340Wstrzymywanie, wznawianie i kończenie działania wątków 345Przykład 11.2. Wykorzystanie głównego wątku 348Test sprawdzający 34912. Typy wyliczeniowe, automatyczne opakowywanie, import składowych statycznych i adnotacje 351Wyliczenia 352Podstawy wyliczeń 352Wyliczenia są klasami 354Metody values() i valueOf() 354Konstruktory, metody, zmienne instancji a wyliczenia 355Dwa ważne ograniczenia 357Typy wyliczeniowe dziedziczą po klasie Enum 357Przykład 12.1. Komputerowo sterowana sygnalizacja świetlna 358Automatyczne opakowywanie 362Typy opakowujące 363Podstawy automatycznego opakowywania 364Automatyczne opakowywanie i metody 365Automatyczne opakowywanie i wyrażenia 366Przestroga 368Import składowych statycznych 368Adnotacje (metadane) 370Test sprawdzający 37313. Typy sparametryzowane 375Podstawy typów sparametryzowanych 376Prosty przykład typów sparametryzowanych 376Parametryzacja dotyczy tylko typów obiektowych 379Typy sparametryzowane różnią się dla różnych argumentów 379Klasa sparametryzowana o dwóch parametrach 380Ogólna postać klasy sparametryzowanej 381Ograniczanie typów 381Stosowanie argumentów wieloznacznych 384Ograniczanie argumentów wieloznacznych 386Metody sparametryzowane 388Konstruktory sparametryzowane 390Interfejsy sparametryzowane 390Przykład 13.1. Sparametryzowana klasa Queue 393Typy surowe i tradycyjny kod 396Wnioskowanie typów i operator diamentowy 399Wnioskowanie typów zmiennych lokalnych a typy sparametryzowane 400Wymazywanie 400Błędy niejednoznaczności 401Ograniczenia związane z typami sparametryzowanymi 401Zakaz tworzenia instancji parametru typu 402Ograniczenia dla składowych statycznych 402Ograniczenia tablic sparametryzowanych 402Ograniczenia związane z wyjątkami 403Dalsze studiowanie typów sparametryzowanych 403Test sprawdzający 40314. Wyrażenia lambda i referencje metod 405Przedstawienie wyrażeń lambda 406Podstawowe informacje o wyrażeniach lambda 406Interfejsy funkcyjne 407Wyrażenia lambda w działaniu 409Blokowe wyrażenia lambda 412Sparametryzowane interfejsy funkcyjne 414Przykład 14.1. Przekazywanie wyrażenia lambda jako argumentu 415Wyrażenia lambda i przechwytywanie zmiennych 419Zgłaszanie wyjątków w wyrażeniach lambda 420Referencje metod 421Referencje metod statycznych 422Referencje metod instancyjnych 423Referencje konstruktorów 427Predefiniowane interfejsy funkcyjne 429Test sprawdzający 43015. Moduły 433Podstawowe informacje o modułach 434Przykład prostego modułu 435Kompilowanie i uruchamianie przykładowej aplikacji 438Dokładniejsze informacje o instrukcjach requires i exports 439java.base i moduły platformy 440Stary kod i moduł nienazwany 441Eksportowanie do konkretnego modułu 442Wymagania przechodnie 443Przykład 15.1. Eksperymenty z instrukcją requires transitive 444Stosowanie usług 447Podstawowe informacje o usługach i dostawcach usług 447Słowa kluczowe związane z usługami 448Przykład stosowania usług i modułów 448Dodatkowe cechy modułów 454Moduły otwarte 455Instrukcja opens 455requires static 455Dalsze samodzielne poznawanie modułów 456Test sprawdzający 45616. Wprowadzenie do biblioteki Swing 459Pochodzenie i filozofia Swing 460Komponenty i kontenery 461Komponenty 461Kontenery 462Panele kontenerów szczytowych 462Menedżery układu 463Pierwszy program wykorzystujący Swing 463Pierwszy program Swing wiersz po wierszu 465Obsługa zdarzeń w Swing 467Zdarzenia 468Źródła zdarzeń 468Obiekty nasłuchujące 468Klasy zdarzeń i interfejsy obiektów nasłuchujących 469Komponent JButton 469Komponent JTextField 472Komponent JCheckBox 475Komponent JList 477Przykład 16.1. Porównywanie plików – aplikacja Swing 480Wykorzystanie anonimowych klas wewnętrznych lub wyrażeń lambda do obsługi zdarzeń 485Test sprawdzający 486A. Rozwiązania testów sprawdzających 489Rozdział 1. Podstawy Javy 489Rozdział 2. Typy danych i operatory 491Rozdział 3. Instrukcje sterujące 492Rozdział 4. Wprowadzenie do klas, obiektów i metod 494Rozdział 5. Więcej typów danych i operatorów 495Rozdział 6. Więcej o metodach i klasach 499Rozdział 7. Dziedziczenie 502Rozdział 8. Pakiety i interfejsy 504Rozdział 9. Obsługa wyjątków 506Rozdział 10. Obsługa wejścia i wyjścia 508Rozdział 11. Programowanie wielowątkowe 511Rozdział 12. Typy wyliczeniowe, automatyczne opakowywanie, import składowych statycznych i adnotacje 513Rozdział 13. Typy sparametryzowane 516Rozdział 14. Wyrażenia lambda i referencje metod 519Rozdział 15. Moduły 522Rozdział 16. Wprowadzenie do Swing 523B. Komentarze dokumentacyjne 529Znaczniki javadoc 529@author 530{@code} 530@deprecated 531{@docRoot} 531@exception 531@hidden 531{@index} 531{@inheritDoc} 531{@link} 531{@linkplain} 532{@literal} 532@param 532@provides 532@return 532@see 532@since 533{@summary} 533@throws 533@uses 533{@value} 533@version 533Ogólna postać komentarza dokumentacyjnego 533Wynik działania programu javadoc 534Przykład użycia komentarzy dokumentacyjnych 534C. Kompiluj i uruchamiaj proste programy w jednym kroku 537D. Wprowadzenie do JShell 539Podstawy JShell 539Wyświetlanie, edycja i ponowne wykonywanie kodu 541Dodanie metody 542Utworzenie klasy 543Stosowanie interfejsu 543Przetwarzanie wyrażeń i wbudowane zmienne 544Importowanie pakietów 545Wyjątki 546Inne polecenia JShell 546Dalsze poznawanie możliwości JShell 547E. Więcej słów kluczowych języka Java 549Modyfikatory transient i volatile 549instanceof 550strictfp 550assert 550Metody rodzime 551Inna postać this 551O 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.
Informatyka
indesit radomsko, święta polska 2022, turysta, plan zagospodarowania przestrzennego toruń, ppk zleceniobiorcy
yyyyy