Содержание курса
Модуль 1. Введение: почему Java и как мы будем учиться
6 уроков
1.
О курсе, маршрут обучения и почему Java до сих пор правит бал
↗
2.
Что такое JVM и почему «Write Once, Run Anywhere» — не просто…
↗
3.
JDK, JRE и компилятор: кто есть кто в экосистеме Java
↗
4.
Устанавливаем JDK 21 и проверяем, что всё работает
↗
5.
Первая программа: class, main и загадочный System.out.println
↗
6.
Как устроен этот курс и что вы будете уметь в конце
↗
Модуль 2. Переменные и типы данных
8 уроков
1.
Переменная как именованная ячейка памяти: объявляем через тип…
↗
2.
Примитивные типы: byte, short, int, long — целые числа во…
↗
3.
float и double: числа с плавающей точкой и почему 0.1 + 0.2…
↗
4.
char и кодировки: один символ — не всегда один char, но…
↗
5.
boolean: только true и false, никаких 0 и 1
↗
6.
Ссылочный тип String: строка как объект, а не массив char-ов
↗
7.
Ключевое слово var: автоматический вывод типа и когда им…
↗
8.
Приведение типов: когда Java делает это сама, а когда нужна…
↗
Модуль 3. Операторы
7 уроков
1.
Арифметические операторы: +, -, *, /, % и сюрпризы…
↗
2.
Операторы сравнения: ==, !=, <, >, <=, >= и как Java…
↗
3.
Логические операторы: &&, ||, ! — строим составные условия
↗
4.
Операторы присваивания: =, +=, -= и компания — короче и…
↗
5.
Тернарный оператор ? : — условное выражение в одну строку
↗
6.
Приоритет операторов: кто главнее и когда ставить скобки
↗
7.
Инкремент и декремент: ++ и --, префиксная и постфиксная форма
↗
Модуль 4. Управление потоком выполнения
8 уроков
1.
if и else: базовая развилка — делай одно ИЛИ другое
↗
2.
if-else-if: цепочка условий, когда вариантов больше двух
↗
3.
Классический switch: выбираем ветку по значению числа, строки…
↗
4.
Новый switch-expression: компактный синтаксис со стрелкой и…
↗
5.
Цикл for: счётчик, условие, шаг — классическая тройка в одном…
↗
6.
Цикл while: повторяем, пока условие истинно
↗
7.
Цикл do-while: хотя бы один раз, даже если условие ложно
↗
8.
break и continue: прерываем цикл и перепрыгиваем итерацию
↗
Модуль 5. Массивы
7 уроков
1.
Объявляем массив: тип[], new и квадратные скобки после типа
↗
2.
Инициализация массива: литералы и значения по умолчанию
↗
3.
Доступ по индексу: читаем и меняем элементы, помним про границы
↗
4.
Свойство length: длина массива и почему её нельзя изменить
↗
5.
Цикл for-each: перебираем элементы без индекса
↗
6.
Многомерные массивы: таблицы и матрицы — массив массивов
↗
7.
Класс java.util.Arrays: toString, sort, fill и другие помощники
↗
Модуль 6. Строки
7 уроков
1.
Пул строк: почему одинаковые литералы — это один и тот же объект
↗
2.
Конкатенация строк: оператор +, метод concat и что внутри
↗
3.
Основные методы String: length, charAt, substring, indexOf…
↗
4.
StringBuilder: эффективное построение строк в цикле
↗
5.
Форматирование: String.format, printf и язык шаблонов %s %d %.2f
↗
6.
Сравнение строк: equals и equalsIgnoreCase — сравниваем…
↗
7.
Оператор == для строк: сравниваем ссылки, не текст — вечная…
↗
Модуль 7. Методы
7 уроков
1.
Объявляем метод: модификатор доступа, возвращаемый тип, имя и…
↗
2.
Параметры методов: передача по значению — примитивы…
↗
3.
return и void: возвращаем результат или просто выполняем…
↗
4.
Перегрузка методов: одно имя, разные параметры — компилятор…
↗
5.
Varargs: переменное число аргументов через многоточие
↗
6.
Рекурсия: метод вызывает сам себя и когда это оправдано
↗
7.
Область видимости: локальные переменные, параметры и поля класса
↗
Модуль 8. Классы и объекты — введение
8 уроков
1.
Ключевое слово class: определяем новый тип с полями и методами
↗
2.
Поля класса: состояние объекта — переменные внутри class
↗
3.
Методы экземпляра: поведение объекта, доступ к полям через this
↗
4.
Конструктор: особый метод, который вызывается при new
↗
5.
Ключевое слово this: ссылка на текущий объект и устранение…
↗
6.
Ключевое слово new: оператор, который выделяет память и…
↗
7.
static: поля и методы, принадлежащие классу, а не экземпляру
↗
8.
Константы: static final — значение, которое никогда не меняется
↗
Модуль 9. Инкапсуляция
6 уроков
1.
private: скрываем поля от внешнего мира и защищаем инварианты
↗
2.
Геттеры и сеттеры: контролируемый доступ к состоянию через…
↗
3.
package-private: доступ по умолчанию — видно внутри пакета…
↗
4.
protected: доступ для наследников и классов того же пакета
↗
5.
Иммутабельность: объекты, которые нельзя изменить после создания
↗
6.
record: современный способ объявить неизменяемый класс данных…
↗
Модуль 10. Наследование
7 уроков
1.
extends: наследуем поля и методы родительского класса
↗
2.
super: обращаемся к родительскому конструктору и…
↗
3.
Переопределение методов: меняем поведение родителя в наследнике
↗
4.
Класс Object: невидимый родитель всех классов и его главные…
↗
5.
equals, hashCode и toString: три кита, которые должны…
↗
6.
final: запрещаем наследование класса и переопределение метода
↗
7.
Абстрактные классы: общий шаблон, который нельзя создать…
↗
Модуль 11. Интерфейсы
7 уроков
1.
interface: объявляем набор методов без реализации
↗
2.
implements: класс обязуется выполнить контракт интерфейса
↗
3.
default-методы: готовая реализация прямо в интерфейсе с Java 8
↗
4.
static-методы в интерфейсе: вспомогательные функции при…
↗
5.
Функциональный интерфейс: ровно один абстрактный метод — и…
↗
6.
Comparable и Comparator: учим объекты сравнивать себя и друг…
↗
7.
Множественная реализация: класс может реализовать несколько…
↗
Модуль 12. Полиморфизм
6 уроков
1.
Приведение типов: upcasting безопасен, downcasting требует…
↗
2.
instanceof: проверяем реальный тип объекта перед приведением
↗
3.
Pattern matching в instanceof: современный синтаксис —…
↗
4.
Виртуальные методы: Java всегда вызывает метод реального…
↗
5.
Полиморфные коллекции: список родительского типа хранит любых…
↗
6.
Принцип подстановки Лисков: наследник не должен ломать…
↗
Модуль 13. Исключения
7 уроков
1.
try и catch: перехватываем исключение и решаем, что делать…
↗
2.
Checked и unchecked исключения: какие компилятор ЗАСТАВЛЯЕТ…
↗
3.
finally: блок, который выполнится в ЛЮБОМ случае — и при…
↗
4.
try-with-resources: автоматическое закрытие файлов и других…
↗
5.
throw и throws: выбрасываем исключение сами и предупреждаем…
↗
6.
Свои классы исключений: наследники Exception и RuntimeException
↗
7.
Цепочки исключений: сохраняем причину через конструктор cause
↗
Модуль 14. Коллекции
7 уроков
1.
List и ArrayList: упорядоченный список с быстрым доступом по…
↗
2.
Set и HashSet: множество уникальных элементов без порядка
↗
3.
Map и HashMap: словарь — ключ, значение и молниеносный поиск
↗
4.
Итератор: единый способ обойти любую коллекцию
↗
5.
Сортировка коллекций: Comparable для естественного порядка…
↗
6.
Неизменяемые коллекции: List.of, Set.of, Map.of — защита от…
↗
7.
Знакомство со Stream API: filter, map, collect — коллекция…
↗
Модуль 15. Дженерики
6 уроков
1.
Зачем нужны дженерики: прощаемся с Object и приведениями типов
↗
2.
Дженерик-класс: параметр типа в угловых скобках после имени…
↗
3.
Дженерик-методы: тип-параметр перед возвращаемым типом метода
↗
4.
Wildcards: ? extends T и ? super T — гибкость без потери…
↗
5.
Bounded type parameters: > —…
↗
6.
Diamond operator: <> — компилятор сам выводит тип, не…
↗
Модуль 16. Работа с файлами и вводом-выводом
7 уроков
1.
Класс File: путь к файлу или директории — проверяем…
↗
2.
Path и Files: современный NIO — читаем, пишем, копируем и…
↗
3.
Чтение текстового файла: Files.readString, Files.lines и…
↗
4.
Запись в текстовый файл: Files.writeString и BufferedWriter
↗
5.
Байтовые потоки: InputStream и OutputStream для любых данных
↗
6.
Буферизация: зачем нужен буфер и как он ускоряет ввод-вывод
↗
7.
try-with-resources с файлами: гарантированное закрытие без…
↗
Модуль 17. Многопоточность — введение
6 уроков
1.
Класс Thread: создаём и запускаем поток — второй путь…
↗
2.
Интерфейс Runnable: отделяем задачу от потока и передаём…
↗
3.
synchronized: защищаем общие данные от одновременного доступа
↗
4.
wait и notify: потоки договариваются друг с другом о…
↗
5.
ExecutorService: пул потоков — создаём, отправляем задачи…
↗
6.
Future и Callable: задача, которая вернёт результат, когда…
↗
Модуль 18. Инструменты разработчика
5 уроков
1.
Maven и Gradle: зачем нужна система сборки и…
↗
2.
JUnit: пишем модульные тесты — аннотации @Test, assertEquals…
↗
3.
Отладка в IDE: точки останова, пошаговое выполнение и…
↗
4.
Логирование: java.util.logging и почему логи красноречивее…
↗
5.
JAR-файл: упаковываем программу в один архив и запускаем java…
↗
Модуль 19. Итоговый проект: консольный менеджер задач
6 уроков
1.
Постановка задачи: что должен уметь наш менеджер задач — add…
↗
2.
Модель данных: класс Task со статусом, приоритетом и датой —…
↗
3.
Сервисный слой: TaskService — вся бизнес-логика в одном…
↗
4.
Файловое хранилище: сохраняем задачи в JSON и читаем при старте
↗
5.
Тесты: покрываем модель и сервис юнит-тестами через JUnit
↗
6.
Куда двигаться дальше: анонс курсов «Scala для…
↗