Java
Теория
-
I. Базовый курс Java
- 1. Java. Общие сведения
- 2. Типы данных. Литералы. Ключевые слова. Переменные
- 3. Операции
- 4. Управляющие операторы
- 4.1. Оператор условного перехода if
- 4.2. Оператор выбора switch. Вложенные операторы switch
- 4.3. Конструкция if-else-if
- 4.4. Циклы for, while, do..while. Примеры использования. Решение задач с использованием циклов
- 4.5. Расширенный цикл for в стиле foreach. Общая форма. Примеры. Обработка массивов, коллекций объектов ArrayList, LinkedList
- 4.6. Операторы break, continue. Примеры использования
- 5. Массивы
- 6. Строки символов
- 7. Классы. Методы в классах
- 7.1. Классы и объекты
- 7.1.1. Применение классов в программах на Java. Определение класса и объекта класса. Примеры
- 7.1.2. Создание и сохранение объектов классов. Оператор new. Области сохранения данных в памяти. Использование массивов ссылок на объекты
- 7.1.3. Область действия объектов (scope). Удаление объектов. Преимущества использования подхода «уборки мусора» (garbage collection) для объектов
- 7.2. Конструкторы
- 7.3. Инициализация в классах
- 7.4. Методы в классах
- 7.4.1. Понятие метода. Общая форма. Параметры метода. Возврат из метода. Оператор return. Возврат объекта из метода. Примеры методов
- 7.4.2. Передача параметров в методах класса. Передача переменных примитивных типов и объектов в метод в качестве параметра
- 7.4.3. Перегрузка методов в классах. Перегрузка конструкторов
- 7.4.4. Аргументы переменной длины в методах
- 7.4.5. Рекурсия
- 7.5. Статические члены данных класса. Статические методы. Ключевое слово static
- 7.6. Спецификатор final. Неизменные данные, методы, классы. Пустые константы. Статические неизменные данные. Inline методы
- 7.1. Классы и объекты
- 8. Вложенные классы
- 9. Инкапсуляция. Управление доступом. Пакеты
- 9.1. Инкапсуляция в классе. Управление доступом в классе. Модификаторы private, protected, public
- 9.2. Пакеты. Использование пакетов в Java. Директивы import и package. Компилированные модули (.java). Промежуточные .class файлы. Структура проекта. Использование стандартных библиотек Java
- 9.3. Управление доступом к классам в пакетах. Пакетный уровень доступа к классу. Общедоступный(public) уровень доступа к классу
- 10. Наследование в классах. Полиморфизм
- 10.1. Повторное использование кода в классах. Понятие композиции, наследования, делегирования. Ключевое слово extends. Примеры
- 10.2. Наследование. Основные понятия. Суперкласс и подкласс. Ключевое слово extends. Скрытие данных в унаследованных классах. Модификаторы доступа private, protected, public
- 10.3. Наследование. Ссылка на объект подкласса. Вызов конструктора суперкласса. Ключевое слово super
- 10.4. Переопределение и перегрузка унаследованных методов. Примеры. Динамическая диспетчеризация методов. Полиморфизм
- 11. Абстрактные классы. Интерфейсы
- 12. Исключения
- 12.1. Исключения. Исключительная ситуация. Ключевые слова try, catch, finally. Примеры
- 12.2. Операторы throw, throws. Примеры
- 12.3. Классы Java для обработки исключительных ситуаций из пакета java.lang. Методы класса Throwable. Примеры
- 12.4. Класс Exception. Создание собственных классов исключений. Примеры
- 13. Перечисления. Автоупаковка. Аннотации
- 13.1. Перечисления (enumeration). Общие сведения. Ключевое слово enum. Примеры
- 13.2. Использование перечислений как классов. Примеры объявления перечислений содержащих конструкторы, внутренние поля, методы
- 13.3. Автоупаковка и автораспаковка. Общие понятия. Использование при присваивании (=) и в методах. Примеры
- 13.4. Автоупаковка и автораспаковка в выражениях и операторе switch. Использование автоупаковки и автораспаковки значений для типов boolean и char
- 14. Система ввода/вывода. Работа с файлами
- 14.1. Система ввода/вывода. Байтовые потоки. Символьные потоки. Стандартные потоки
- 14.2. Работа с консолью в Java. Классы InputStreamReader, PrintStream. Создание потока ввода/вывода связанного с консолью. Перенаправление потоков ввода/вывода
- 14.3. Работа с файлами в Java. Класс File. Основные методы работы
- 14.4. Байтовые потоки. Классы DataInputStream, DataOutputStream, FileInputStream, FileOutputStream. Примеры использования
- 14.5. Примеры реализации операций, которые модифицируют текстовые файлы. Классы FileReader, FileOutputStream, PrintStream
- 14.6. Автоматическое закрытие файла. Оператор try с ресурсами. Примеры
- 14.7. Сериализация объектов. Ключевое слово transient. Примеры
- 15. Обобщения
- 16. Дополнительные возможности Java
- 17. Лямбда-выражения. Функциональные интерфейсы. Ссылки на методы
- 17.1. Лямбда-выражения. Основные понятия. Функциональный интерфейс. Примеры
- 17.2. Лямбда-выражения для обобщенных функциональных интерфейсов
- 17.3. Передача лямбда-выражения в метод в качестве параметра. Примеры
- 17.4. Генерирование исключений в лямбда-выражениях. Примеры
- 17.5. Доступ к элементам класса в лямбда-выражениях. Захват переменных в лямбда-выражениях. Примеры
- 17.6. Ссылки на методы. Виды ссылок на методы. Ссылка на статический метод. Ссылка на метод экземпляра
- 17.7. Ссылка на конструктор класса
- 17.8. Стандартные (предопределенные) функциональные интерфейсы Java
- 18. Потоки данных Stream API
- 18.1. Потоки данных Stream API. Общая информация
- 18.2. Понятие конечной и промежуточной операции. Примеры. Отличия. Методы создания потока данных stream(), parallelStream()
- 18.3. Интерфейс BaseStream. Примеры использования методов интерфейса
- 18.4. Интерфейс Stream<T>. Промежуточные методы: filter(), map(), mapToDouble(), mapToInt(), mapToLong(), sorted(). Примеры
- 18.5. Интерфейс Stream<T>. Конечные методы: collect(), count(), forEach(), max(), min(), reduce(), toArray(). Примеры
- 19. Потоки выполнения (Threads)
- 19.1. Многозадачность. Потоки выполнения. Основные понятия
- 19.2. Средства Java для работы с потоками выполнения. Класс Thread. Интерфейс Runnable. Главный поток выполнения. Создание дочернего потока
- 19.3. Методы класса Thread: getName(), run(), start(), sleep(). Примеры
- 19.4. Методы класса Thread: join(), isAlive(), getPriority(), setPriority(). Примеры
- 19.5. Синхронизация потоков. Монитор. Общие понятия. Ключевое слово synchronized
- 19.6. Взаимодействие между приложениями. Методы wait(), notify(), notifyAll()
- 19.7. Состояния потока выполнения. Метод getState(). Пример
-
II. Библиотека Java
- 1. Пакет java.lang
- 1.1. Пакет java.lang. Общие сведения. Обзор классов и интерфейсов
- 1.2. Классы пакета java.lang
- 1.2.5. Класс Character
- 1.2.11. Класс Enum. Методы класса Enum: clone(), compareTo(), getDeclaringClass(), hashCode(), name(), ordinal(), toString()
- 1.2.16. Класс Math
- 2. Пакет java.util
- 2.1. Java Collection Framework
- 2.1.1. Общие сведения о Java Collection Framework
- 2.1.2. Класс ArrayList
- 2.1.2.1. Класс ArrayList. Динамический массив. Общие сведения. Создание массива
- 2.1.2.2. Методы изменяющие данные в массиве. Методы add(), addAll(), clear(), remove(), removeIf(), replaceAll(), set(), sort()
- 2.1.2.3. Методы, определяющие информацию об элементах массива. Методы get(), contains(), containsAll(), indexOf(), lastIndexOf(), iterator(), listIterator()
- 2.1.2.4. Методы определяющие общие характеристики массива. Методы ensureCapacity(), isEmpty(), size(), trimToSize()
- 2.1.2.5. Методы преобразующие массив в целом. Методы clone(), sublist(), toArray(), retainAll()
- 2.14. Класс Random
- 2.14.1. Класс Random. Генерирование случайных чисел. Список методов. Методы получения одиночных случайных чисел: setSeed(), nextBoolean(), nextDouble(), nextFloat(), nextGaussian(), nextInt(), nextLong()
- 2.14.2. Методы получения наборов случайных чисел. Методы doubles(), ints(), longs(), nextBytes()
- 2.1. Java Collection Framework
- 1. Пакет java.lang
Практика
- 1. Разработка классов
- 2. Stream API
- 3. Решение задач. Примеры
- 4. JUnit
⇑