- Rozdział 1 - Wstęp
- Dla kogo przeznaczony jest kurs?
- O kursie
- Przykłady, odpowiedzi do pytań i rozwiązania zadań
- O autorze
- Formatowanie użyte w kursie
- Dlaczego Java?
- Jak tworzy się własne programy?
- Instalacja Java i przygotowanie środowiska programistycznego
- Katalog z przykładami
- Edytor tekstu – Notepad++ i IntelliJ IDEA
- Instalacja Java
- Instalacja Java Development Kit
- Ustawienie lokalizacji Java w zmiennej PATH
- Sprawdzenie poprawności instalacji
- Pierwszy program
- Krok pierwszy – kod źródłowy – Witaj Świecie!
- Krok drugi – kompilacja kodu Java
- Krok trzeci – uruchamiamy nasz program
- Analiza programu Witaj Świecie!
- Pierwsza linia – definicja klasy Hello World
- Druga linia – definicja metody main
- Trzecia linia – wypisanie tekstu na ekran
- Biblioteka Standardowa Java
- Podsumowanie
- Podstawy
- Kompilacja i uruchamianie kodu Java
- Przykład utworzenia, kompilacji, i uruchomienia programu Java
- Język Java
- Pytania
- Zadania
- Wypisz imię
- Brak końcowego znaku }
- Zakładka do JavaDoc
- Rozdział 2 - Komentarze i formatowanie kodu
- Komentarze
- Rodzaje komentarzy
- Zagnieżdżanie komentarzy
- Komentarze w stringach
- Kiedy używać komentarzy?
- Formatowanie kodu i najlepsze praktyki
- Najlepsze praktyki i konwencje
- Jedna instrukcja na linię
- Stosowanie wcięć
- Nazwy-wielbłądy (czyli Camel Case)
- Nazwy klas zaczynamy wielką literą
- Nie trzymamy zakomentowanego kodu
- Nazwy obiektów oraz komentarze po angielsku
- Podsumowanie
- Komentarze
- Formatowanie kodu i najlepsze praktyki
- Pytania
- Zadania
- Dopisz komentarze
- Brak main
- Rozdział 3 - Zmienne
- Czym są zmienne?
- Definiowanie zmiennych
- Wypisywanie na ekran wartości zmiennych
- Przykład – liczenie pola i obwodu koła
- Reguły nazw w języku Java
- Nadawanie nazw
- Typy podstawowe
- Literały
- Typy całkowite i zmiennoprzecinkowe
- Typ boolean
- Typ char
- Używanie zmiennych
- Stałe
- Zadania z podstaw zmiennych
- Dodawanie liczb
- Obwód trójkąta
- Aktualna data
- Liczba miesięcy w roku
- Inicjały
- Operatory w programowaniu
- Operatory arytmetyczne
- Operatory dodawania, odejmowania i mnożenia
- Operatory dzielenia i reszty z dzielenia
- Rzutowanie
- Zmiana priorytetów operatorów za pomocą nawiasów
- Plus jako operator konkatenacji
- Operatory przypisania
- Pomocnicze operatory przypisania
- Operatory jednoargumentowe
- String i wczytywanie danych od użytkownika
- Typ String
- Wczytywanie danych od użytkownika
- Podsumowanie
- Zmienne
- Nazwy
- Typy
- Stałe
- Operatory
- Typ String i wczytywanie danych od użytkownika
- Pytania
- Zadania
- Obwód trójkąta z pobranych danych
- Pobrane słowa w odwrotnej kolejności
- Liczba znaków w słowie
- Wynik rzeczywisty
- Wielkie litery
- Pole koła o podanym promieniu
- Rozdział 4 - Instrukcje warunkowe
- Podstawy instrukcji warunkowych
- Składnia instrukcji warunkowych
- Instrukcje w instrukcjach warunkowych
- Formatowanie instrukcji warunkowych
- Operatory relacyjne
- Typ boolean
- Warunki instrukcji if
- Operatory warunkowe i operator logiczny !
- Operator logiczny !
- Tablica prawdy operatorów warunkowych
- Nawiasy i priorytety operatorów warunkowych
- Short-circuit evaluation
- Zagnieżdżanie instrukcji warunkowych
- Bloki kodu i zakresy zmiennych
- Bloki kodu w instrukcjach warunkowych
- Instrukcja switch
- Użycie break w instrukcji switch
- Trój-argumentowy operator logiczny
- Podsumowanie
- Instrukcje warunkowe if
- Operatory relacyjne i typ boolean
- Operatory warunkowe
- Bloki kodu i zakres zmiennych
- Instrukcja switch
- Trój-argumentowy operator logiczny
- Pytania
- Zadania
- Czy liczba podzielna przez trzy
- Czy można zbudować trójkąt
- Wypisz największą z dwóch liczb
- Wypisz największą z trzech liczb
- Zamień liczbę na nazwę miesiąca
- Sprawdź imię
- Czy pełnoletni
- Czy rok przestępny
- Rozdział 5 - Pętle
- Czym są pętle?
- Pętla while
- Przykład: wypisywanie ciągu liczb
- Przykład: wypisywanie gwiazdek
- Pętla do..while
- Przykład: dodawanie kolejnych liczb
- Pętle nieskończone
- Pętla for
- Instrukcje inicjalizujące i kroku
- Zakres zmiennych w pętlach
- Instrukcje break oraz continue
- Instrukcja break
- Instrukcja continue
- Ten sam kod z użyciem różnych pętli
- Wyświetlanie kwadratu podanej liczby
- Wypisanie kolejnych liczb parzystych
- Zagnieżdżanie pętli
- Użycie break i continue w pętlach zagnieżdżonych
- Typ String i metoda charAt oraz pętle
- Porównywanie znaków zwracanych przez charAt
- Podsumowanie
- Pytania
- Zadania
- While i liczby od 1 do 10
- Policz silnię
- Palindrom
- Wypisz największą liczbę z podanych
- Zagnieżdżone pętle
- Kalkulator
- Choinka
- Rozdział 6 - Tablice
- Czym są tablice?
- Definiowanie i używanie tablic
- Odnoszenie się do elementów tablicy
- Domyślne wartości w tablicach
- Sprawdzanie liczby elementów tablicy
- Użycie pętli z tablicami
- Tablice wielowymiarowe
- Inicjalizacja tablic wielowymiarowych
- Pętla for each
- Porównywanie tablic i zmiana rozmiaru tablic
- Zmiana rozmiaru tablicy
- Podsumowanie
- Pytania
- Zadania
- Co druga wartość tablicy
- Największa liczba w tablicy
- Słowa z tablicy wielkimi literami
- Odwrotności słów w tablicy
- Sortowanie liczb
- Silnia liczb w tablicy
- Porównaj tablice stringów
- Rozdział 7 - Metody
- Czym są metody?
- Do czego potrzebne są metody?
- Podsumowanie podstaw metod
- Pytania do podstaw metod
- Zadania do podstaw metod
- Metoda wypisująca Witajcie!
- Metoda odejmująca dwie liczby
- Zakres i wywoływanie metod, zmienne lokalne
- Zakres metod
- Wywoływanie metod
- Zmienne lokalne
- Czas życia zmiennych lokalnych
- Podsumowanie zakresu i wywoływania metod, zmiennych lokalnych
- Pytania do zakresu i wywoływania metod, zmiennych lokalnych
- Wartości zwracane przez metody
- Słowo kluczowe return
- Używanie wartości zwracanych przez metody
- Przypisanie wyniku metody do zmiennej
- Rezultat metody jako argument innej metody
- Metoda użyta w instrukcji warunkowej
- Nieużywanie wyniku metody
- Nieosiągalne ścieżki wykonania i ścieżki bez return
- Nieosiągalny kod
- Void, czyli niezwracanie wartości
- Podsumowanie do zwracania wartości
- Pytania do zwracania wartości
- Zadania do zwracania wartości
- Metoda podnosząca do sześcianu
- Metoda wypisująca gwiazdki
- Argumenty metod
- Modyfikacja argumentów metod
- Metody typu string
- Przypomnienie metod length i charAt oraz indeksów znaków
- Przykłady użycia metod typu String
- toLowerCase, toUpperCase
- endsWith, startsWith, contains
- equals, equalsIgnoreCase
- replace, substring, split
- Dokumentowanie metod
- Podsumowanie, pytania i zadania do argumentów metod i metod typu String
- Podsumowanie argumentów metod
- Podsumowanie metod typu String
- Podsumowanie dokumentowania metod
- Pytania
- Zadania
- Metoda zwracająca ostatni znak
- Metoda czyPalindrom
- Metoda sumująca liczby w tablicy
- Metoda zliczająca znak w stringu
- Przeładowywanie metod
- Typ zwracany przez metodę a przeładowywanie metod
- Nazwy parametrów a przeładowywanie metod
- Podsumowanie przeładowywania metod
- Pytania do przeładowywania metod
- Zadania do przeładowywania metod
- Metoda porównująca swoje argumenty
- Rozdział 8 - Testowanie kodu
- Wstęp do testowania
- Pierwsze testy
- Testy w osobnych metodach
- Informowanie tylko o błędnym działaniu
- Więcej przypadków testowych
- Duplikacja kodu
- Given..when..then
- Dlaczego testy jednostkowe są ważne?
- Testowalny kod
- Co charakteryzuje dobre testy jednostkowe?
- Przykłady testów jednostkowych
- Wartość bezwzględna
- Metoda sprawdzająca, czy tablica zawiera element
- Test Driven Development
- Podsumowanie
- Pytania
- Zadania
- Testy czyParzysta
- Testy sprawdzania znaku liczby
- Testy zwracania indeksu szukanego elementu
- Rozdział 9 - Klasy
- Czym są klasy i do czego służą?
- Przykład pierwszej klasy z polami
- Użycie pierwszej klasy
- Nazewnictwo klas
- Jak tworzyć nowe instancje (obiekty) klas?
- Metoda toString
- Podsumowanie
- Pytania
- Zadania
- Klasa Osoba
- Różnice między typami prymitywnymi i referencyjnymi
- Przechowywane wartości
- Tworzenie
- Modyfikatory dostępu
- Modyfikatory dostępu public oraz private
- Modyfikatory public oraz private – przykład – klasa Ksiazka
- Użycie pól i metod publicznych klasy Ksiazka
- Próba użycia pola i metody private klasy Ksiazka spoza tej klasy
- Dostęp do prywatnych pól oraz metod w klasie Ksiazka
- Kiedy stosować modyfikatory dostępu
- Podsumowanie i pytania – typy prymitywne i referencyjne, modyfikatory dostępu
- Typy prymitywne i referencyjne
- Typy prymitywne i referencyjne – pytania
- Modyfikatory dostępu
- Modyfikatory dostępu – pytania
- Pola klas
- Pola klas a zmienne definiowane w metodach
- Zapamiętywanie wartości
- Inicjalizacja i domyślne wartości typów prymitywnych
- Wartość null
- Brak wymagania definicji przed użyciem
- Gettery i settery oraz enkapsulacja
- this
- Konwencje dotyczące pisania setterów i getterów
- Podsumowanie
- Pola klas
- Wartości domyślne i null
- Gettery i settery oraz this
- Konwencje dotyczące pisania setterów i getterów
- Pytania
- Zadania
- Klasa Punkt
- Konstruktory
- Domyślny konstruktor
- Przeładowanie konstruktora
- Inicjalizacja pól finalnych w konstruktorach
- Prywatne konstruktory
- Podsumowanie
- Pytania
- Zadania
- Klasa Adres
- Klasa Osoba z konstruktorem
- Equals i porównywanie obiektów
- Porównywanie wartości zmiennych
- Porównywanie obiektów za pomocą equals
- Sygnatura metody equals
- Typ Object i krótko o dziedziczeniu
- Implementacja metody equals w klasie Osoba
- Kontrakt equals
- Equals – przykład z tablicą
- Krok po kroku – pisanie metody equals
- Podsumowanie
- Pytania
- Zadania
- Klasa Punkt z equals
- Klasa Figura z equals
- Referencje do obiektów
- Przesyłanie i modyfikowanie obiektów w metodach
- Współdzielenie obiektów
- Osobne obiekty typu Punkt
- Tworzenie kopii obiektów
- Kiedy współdzielić obiekty?
- Stałe referencje
- Obiekty niemutowalne (immutable objects)
- Zalety i wady obiektów niemutowalnych
- Jak zapewnić niemutowalność obiektów
- Niemutowalny typ String
- Pamięć programu – stos i sterta
- Czas życia obiektów utworzonych w metodach
- Podsumowanie różnic typów prymitywnych i referencyjnych
- Podsumowanie
- Pytania
- Zadania
- Immutowalna Ksiazka i Biblioteka
- Metody i pola statyczne
- Pola statyczne
- Metody statyczne
- Dlaczego metoda main jest statyczna?
- Kiedy stosować pola i metody statyczne?
- Podsumowanie
- Zadania
- Klasa użyteczna Obliczenia
- Pakiety i importowanie klas
- Pakiety klas
- Konwencja nazewnicza pakietów klas
- Importowanie klas
- Importy statyczne – static import
- Lokalizacja klas – classpath
- Kiedy nie trzeba stosować instrukcji import
- Dostęp domyślny (default access) i klasy niepubliczne
- Dostęp domyślny
- Kiedy stosować dostęp domyślny?
- Modyfikator dostępu protected
- Niepubliczne klasy
- Podsumowanie
- Pakiety klas
- Importowanie klas
- Dostęp domyślny
- Pytania
- Rozdział 10 - Dziedziczenie i polimorfizm
- Czym jest dziedziczenie?
- Pierwszy przykład dziedziczenia
- Czym jest polimorfizm?
- Polimorfizm w akcji
- Przykład method overriding
- Zagadnienia związane z dziedziczeniem
- Limit rozszerzanych klas
- Dziedziczenie pól i metod
- Konstruktory i tworzenie obiektów klas pochodnych
- Powtórka z konstruktorów
- Konstruktory klas bazowych i kolejność tworzenia obiektów
- Wywoływanie konstruktora klasy bazowej i słowo kluczowe super
- Prywatne konstruktory a dziedziczenie
- Modyfikator protected i porównanie modyfikatorów
- Rozdział 11 - Wyjątki
- Czym są wyjątki?
- Stack trace
- Przykład obsługi sytuacji wyjątkowej
- Korzystanie z try..catch..finally
- Zakres zmiennych definiowanych w bloku try
- Metoda getInt i obsługa wyjątków
- Definiowanie i rzucanie wyjątków
- Definiowanie własnych wyjątków
- Przerywanie wykonania bloku kodu przez wyjątki
- Rzucanie wyjątków i nieosiągalny kod
- Rzucanie wyjątków a wartość zwracana z metody
- Rzucanie wyjątków w try, catch, i finally
- Ponowne rzucanie wyjątku
- Treść wyjątku, stack trace i inne pola i metody
- Wyjątki Checked & Unchecked
- Jak rozpoznać wyjątki Checked i Unchecked?
- Dlaczego istnieją dwa rodzaje wyjątków?
- Sprawdzanie wyjątków rzucanych przez metodę
- Jak sprawdzić rodzaj wyjątku
- Błędy kompilacji podczas braku obsługi wyjątków Checked
- Błąd Error
- Łapanie wyjątków
- Łapanie wyjątków za pomocą klasy bazowej
- Łapanie kilku wyjątków za pomocą znaku |
- Kolejność łapania wyjątków ma znaczenie
- Pomijanie łapania wyjątków
- Silent catch
- Pomijanie try..catch w metodzie main
- Try with resources
- Wady i zalety wyjątków
- Dlaczego używać mechanizmu wyjątków?
- Wady wyjątków
- Podsumowanie
- Podstawy wyjątków
- Łapanie wyjątków
- Rodzaje wyjątków
- Definiowanie i rzucanie wyjątków
- Sprawdzanie rzucanych wyjątków i ich rodzaju
- Pytania
- Zadania
- Silnia z obsługą ujemnych liczb
- Klasa Adres z walidacją danych
- Liczba znaków w pliku
- Implementacja stosu
Odpowiedzi do pytań i rozwiązania do zadań
Właśnie skończyłam czytać ostatni rozdział. Świetny kurs dla początkujących, napisany w sposób ciekawy, przemyślany, przejrzysty i zrozumiały. Bardzo dziękuję że go napisałeś i udostępniłeś całkowicie za darmo. Ogromna praca godna podziwu! Przeglądałam strony innych kursów , ale ten zdecydowanie według mojej subiektywnej opinii jest najlepszy. Jeszcze raz dzięki 🙂
Bardzo dziękuję za miłe słowa, cieszę się, że kurs się przydaje 🙂