Dokumentacja Java
Zwięzła dokumentacja Java oparta na przykładach. Przeczytaj o zagadnieniu, zobacz kod i przećwicz go na ścieżce Coddy.
Zacznij ścieżkę Java z przewodnikiemGetting Started
- Czym jest JavaCzym naprawdę jest Java, jak JVM pozwala uruchomić jeden skompilowany program wszędzie i jakie oprogramowanie buduje się w Javie.
- Instalacja JavyJak zainstalować Java Development Kit (JDK), wybrać wersję i dostawcę oraz sprawdzić, czy java i javac działają w wierszu poleceń.
- Uruchamianie JavyDwuetapowy cykl kompilacji i uruchomienia, na którym opiera się każdy program w Javie: zamiana kodu .java na bytecode przez javac, a potem uruchomienie pliku .class przez java.
- Składnia JavyBudowa programu w Javie: metoda `main`, instrukcje i średniki, bloki i nawiasy klamrowe oraz reguły, których kompilator pilnuje, zanim twój kod w ogóle się uruchomi.
- KomentarzeJak pisać komentarze w Javie: jednoliniowe //, wieloliniowe bloki /* */ i komentarze dokumentacyjne Javadoc /** */, a także kiedy używać każdego z nich i czego unikać.
Variables & Types
- ZmienneJak działają zmienne w Javie: deklarowanie z typem, przypisywanie wartości, zasady nazewnictwa, słowo kluczowe var, stałe z final i reguły zasięgu, które decydują, gdzie żyje zmienna.
- Typy danychTypy danych w Javie w praktyce: osiem typów prostych, typy referencyjne, wartości domyślne, literały i sufiksy, przepełnienie oraz wybór właściwego typu liczbowego.
- StringiJak działają stringi w Javie: tworzenie, łączenie przez +, dlaczego są niezmienne, porównywanie przez equals i codzienne metody klasy String, takie jak length, substring i replace.
- Formatowanie napisówJak formatować napisy w Javie przez String.format i printf: specyfikatory formatu dla liczb, wyrównanie, miejsca po przecinku, a także bloki tekstowe i metoda formatted.
- OperatoryJak działają operatory w Javie: arytmetyczne, porównania, logiczne, przypisania, inkrementacji i operator trójargumentowy, a do tego dzielenie całkowite, priorytety i pułapki, na które wpadają początkujący.
- Rzutowanie typówJak Java zamienia wartości między typami: automatyczne rozszerzanie, jawne rzutowanie zawężające, jakie dane tracisz przy zawężaniu i konwersja między liczbami a stringami.
- Klasa MathJak używać klasy Math w Javie: Math.pow, Math.sqrt, Math.abs, Math.max i Math.min, zaokrąglanie przez round, floor i ceil, losowanie liczby z zakresu przez Math.random oraz stałe PI i E, razem z typem zwracanym przez każdą metodę.
Control Flow
- if-elseJak podejmować decyzje w Javie za pomocą if, else if i else: warunki logiczne, łańcuchy gałęzi, zagnieżdżanie, operator trójargumentowy i częste błędy.
- switchInstrukcja switch w Javie bez tajemnic: etykiety case, break i fall-through, gałąź default, grupowanie przypadków, nowoczesna forma ze strzałką i wyrażenia switch.
- Pętla forPętla for w Javie w praktyce: klasyczna pętla z trzema częściami, pętle po tablicach i listach, pętle zagnieżdżone, break i continue oraz rozszerzone for-each.
- Pętle whilePętla while w Javie w praktyce: while sprawdzające warunek na początku, do-while wykonujące się co najmniej raz, wczytywanie danych do wartości wartowniczej, break i continue oraz unikanie pętli nieskończonych.
- Pętla for-eachPętla for-each (rozszerzona pętla for) w Javie: czytelne przechodzenie po tablicach i kolekcjach, kiedy jej używać i pułapka modyfikacji, na którą każdy trafia.
Arrays & Collections
- TabliceJak działają tablice w Javie: stała długość, deklaracja i inicjalizacja, indeksowanie, length, pętle, tablice wielowymiarowe i klasa pomocnicza Arrays.
- ArrayListJak używać ArrayList w Javie, czyli listy o zmiennym rozmiarze, po którą sięgasz zamiast zwykłej tablicy: add, get, remove, size, pętle i sortowanie.
- HashMapJak używać HashMap w Javie do wyszukiwania po kluczu: put, get, getOrDefault, containsKey, iterowanie po wpisach i wzorce, po które sięga się najczęściej.
- HashSetJak używać HashSet w Javie do kolekcji unikalnych wartości: add, contains, remove, usuwanie duplikatów z listy oraz suma, iloczyn i różnica zbiorów.
- Iterowanie po kolekcjachSposoby przechodzenia po kolekcjach w Javie: pętla for-each, Iterator, pętle z indeksem i metoda forEach, a także bezpieczne usuwanie elementów podczas iteracji.
Methods
- MetodyCzym jest metoda w Javie, jak ją zadeklarować i wywołać, wartości zwracane a void, statyczna metoda main i jak metody porządkują kod i pozwalają używać go wielokrotnie.
- Parametry metodJak działają parametry metod w Javie: przekazywanie argumentów, różnica między parametrami a argumentami, zasada przekazywania przez wartość i zwracanie wartości.
- Przeciążanie metodJak przeciążanie metod w Javie pozwala kilku metodom mieć tę samą nazwę, ale inne parametry, jak kompilator wybiera przeciążenie i jakich pułapek niejednoznaczności unikać.
- VarargsJak varargs (...) w Javie pozwalają metodzie przyjąć dowolną liczbę argumentów, jak stają się tablicą, zasada jednego varargs na końcu oraz pułapki pustego wywołania i niejednoznaczności.
Classes & Objects
- KlasyCzym jest klasa w Javie, jak definiować pola i metody, tworzyć obiekty przez new, jaką rolę pełni this i dlaczego stan instancji należy do obiektu.
- KonstruktoryJak działają konstruktory w Javie: konstruktor domyślny, konstruktory z parametrami, this, przeciążanie konstruktorów i łańcuchowanie przez this() i super().
- DziedziczenieJak podklasa w Javie dziedziczy pola i metody przez extends, odwołuje się do rodzica przez super i nadpisuje zachowanie, a także jakie są częste pułapki.
- InterfejsyCzym jest interfejs w Javie, jak go zdefiniować i zaimplementować, metody default i static oraz czym interfejsy różnią się od klas abstrakcyjnych.
- Klasy abstrakcyjneCzym jest klasa abstrakcyjna w Javie, jak deklarować metody abstrakcyjne, dlaczego nie da się utworzyć jej instancji i kiedy wybrać klasę abstrakcyjną zamiast interfejsu.
- PolimorfizmJak polimorfizm w Javie pozwala jednej zmiennej wskazywać na obiekty wielu typów, dlaczego nadpisane metody są wybierane w czasie działania i jak bezpiecznie używać upcastingu, downcastingu i instanceof.
- Modyfikatory dostępuJak cztery poziomy dostępu w Javie, czyli public, private, protected i package-private, określają, co inny kod może zobaczyć i zmienić.
- Składowe statyczneCo robi słowo kluczowe static w Javie, jak pola i metody statyczne należą do klasy zamiast do obiektów i kiedy sięgać po bloki statyczne i stałe.
- EnumyCzym jest enum w Javie, jak go zadeklarować, dodać pola i metody, użyć w switch i dlaczego enum jest lepszy niż sterta stałych int lub String.
Generics & Functional
- Typy generyczneCzym są typy generyczne (generics) w Javie, jak pisać generyczne klasy i metody, parametry typu z ograniczeniami, wildcardy i dlaczego wymazywanie typów ma znaczenie.
- Wyrażenia lambdaCzym jest wyrażenie lambda w Javie, składnia ze strzałką, jak lambda implementuje interfejs funkcyjny, referencje do metod i przechwytywanie zmiennych.
- Strumienie (Stream API)Jak przetwarzać kolekcje przez Stream API w Javie: filter, map, sorted, collect, count i reduce, czyli czytelne potoki zamiast ręcznie pisanych pętli.
- OptionalCzym jest java.util.Optional, jak go utworzyć i jak bezpiecznie odczytać jego wartość przez map, filter, orElse i ifPresent zamiast sprawdzać null.
Errors & Debugging
- WyjątkiCzym jest wyjątek w Javie, jak czytać stack trace, czym różnią się wyjątki checked i unchecked, jak wygląda hierarchia wyjątków i jak rzucać własne.
- try-catchJak używać try-catch w Javie do obsługi wyjątków: łapanie konkretnych typów, blok finally, try-with-resources i błędy, które ukrywają bugi.
- NullPointerExceptionCo naprawdę oznacza NullPointerException w Javie, jakie są typowe sposoby na jego wywołanie, jak czytać komunikat i jakie wzorce mu zapobiegają.