1. Вводное занятие. Команды и первая программа на Java. О java преимуществах, области применения О JavaRush академии и JavaRush Структура программы, метод main sout Компиляция класса в байт-код из консоли, запуск программы рассказ о WebIDE 2. Знакомство с типами и ввод с клавиатуры. Знакомство с IDEA. Сохранение текста в переменную, ее вывод в консоль Объявление и инициализация переменных String Комментарии в коде Переменные типа int Элементарные математические операции с переменными типа int Инкремент, декремент Конкатенация Integer.parseInt(), String.valueOf() Хранение примитивных переменных в памяти Хранения String переменных в памяти byte, short, char, long, float, double, boolean Методы Scanner Установка IDEA, скачивание проекта, скачивание JDK Установка плагина, рассказ о его функционале Д.З. в Идее 3. Условный оператор. if, if-else, if-else-if Блоки команд Вложенные блоки команд (вложенные if-ы) Перегрузка методов, особенность вызова конструкторов Операторы сравнения, в т.ч. double Логические И, ИЛИ, НЕ Тернарний оператор Знакомство с потоками: Reader/Writer, FileReader/FileWriter Сравнение примитивов и String Д.З. 4. Циклы. Проблематика на примере задачи сделать что-то много раз while break, continue for do-while Сравнение разных циклов, выявление где какой лучше использовать Д.З. 5. Массивы. Создание и заполнение массивов Обход массива Хранение массивов в памяти Двумерные массивы Зубчатые массивы n-мерные массивы Утилитный класс Arrays 6. Функции. Объявление и вызов методов Параметры Возвращаемое значение, void Модификаторы доступа Локальные переменные метода Модификаторы методов, метод main Константы Сокрытие переменных (shadowing) 7. Работа со строками. Факультатив (StringBuilder, String.format, кодировки, экранирование символов ...) Литералы Кодировки Экранирование символов Основные методы класса String Вспомогательные классы для работы со строками 8. Типы данных. Знакомство с ООП. Примитивные типы Приведение типов данных Ссылочные типы Объекты null Знакомство с ООП Наследование 9. Объекты. Создание объектов (new) Конструктор, конструктор по умолчанию Конструктор с параметрами Порядок вызова конструкторов при наследовании Доступ к полям объекта (геттер, сеттер) Жизненный цикл объекта hashCode, equals 10. Классы и static. Загрузка класса Статические переменные Сравнение статических и нестатических переменных Статические методы Порядок инициализации при использовании конструкторов и статических блоков Внутренние классы 11. Списки и Generics. Классы обертки ArrayList Array VS ArrayList Статические методы Типизация ArrayList (дженерики) 12. Коллекции. Иерархия коллекций LinkedList ArrayList VS LinkedList Set, HashSet Queue Map, HashMap, TreeMap Для каких задач лучше использовать какие коллекции iterator, for-each Collections 13. Singleton, Enum, switch. Зачем нужны перечисления Объявления Enum Enum - лучший синглтон switch 14. Исключения. Нормальное выполнение кода и ошибки в рантайме try-catch Иерархия исключений multicatch finally throw throws Создание своих исключений stack trace try with resources AutoCloseable 15. Потоки ввода-вывода. InputStream Reader BufferedReader OutputStream Writer BufferedWriter 16. Потоки ввода-вывода 2. Pattern Chain of responsibility. ByteArrayInputStream RByteArrayOutputStream Комбинирование потоков 17. Потоки ввода-вывода 3. java.nio. io VS nio FileChannel Selector Path Paths Files 18. Работа со временем и датой. Date DateFormat Calendar LocalDate, LocalTime, LocalDateTime Instant ZonedDateTime DateTimeFormatter 19. Git. Итоговый проект. Делаем крипто-анализатор