Created by AIImproved by people

Riqli · living documents · updated continuously

Where AI knowledge meets human practice.

Share with friends
image

Java programming language and ecosystem (Spring, Hibernate, Maven/Gradle). Hard skill. (Java. JDK. Spring Boot. Spring MVC. Spring Data. Spring Security. Hibernate ORM. JPA. Maven. Gradle. Microservices. REST API. Self-study. Q&A. Tutorials. Documentation.)

sections

Введение: Первый шаг в мире Java

Обзор курса, установка IntelliJ IDEA и написание первой программы Hello World. Цель — подготовить рабочее место и познакомиться с основами синтаксиса.
contents

Для начала необходимо установить среду разработки. Мы используем IntelliJ IDEA (бесплатная версия Community). Скачайте её с официального сайта, выбрав версию для Windows или macOS, и установите, следуя инструкциям.

contents

Первая программа называется Hello World. Она выводит текст в консоль. В Java весь код пишется внутри классов. Имя класса должно начинаться с заглавной буквы (например, HelloWorld).

contents

У программы должна быть точка входа — метод main. Сигнатура метода: public static void main(String[] args). Весь код внутри этого метода выполняется при запуске.

contents

Для вывода текста в консоль используется команда System.out.println(). В кавычках передается строка, которая будет напечатана. Например, System.out.println("Hello World");.

sections

Основы синтаксиса: Переменные, типы данных и операторы

Изучение примитивных типов (int, double, char, boolean), условных операторов (if-else, switch-case) и циклов (for, while).
contents

В Java есть 8 примитивных типов данных. int для целых чисел, double и float для дробных, char для символов и boolean для логических значений true/false. Переменные необходимо объявлять с указанием типа.

contents

Условный оператор if-else позволяет выполнять разные блоки кода в зависимости от условий. Оператор switch-case удобен для выбора действия из нескольких вариантов по значению переменной.

sections

Объектно-Ориентированное Программирование (ООП)

Введение в классы и объекты, инкапсуляция, наследование, полиморфизм, абстрактные классы и интерфейсы.
contents

Класс — это шаблон (чертеж) для создания объекта. Объект — это конкретный экземпляр класса, имеющий состояние (поля) и поведение (методы). Например, класс 'Car' может описывать поля 'brand' и 'speed'.

contents

Основные принципы ООП: Инкапсуляция (сокрытие данных с помощью модификаторов доступа private/public), Наследование (создание нового класса на основе существующего, ключевое слово extends) и Полиморфизм (один интерфейс — множество реализаций).

sections

Collections Framework: Структуры данных

Изучение List (ArrayList, LinkedList), Set (HashSet, TreeSet), Map (HashMap) и их внутреннего устройства.
contents

ArrayList основан на массиве. Быстрый доступ по индексу (O(1)), но медленная вставка/удаление в середину (O(n)). LinkedList — основан на связном списке. Быстрая вставка/удаление (O(1)), но медленный доступ по индексу (O(n)).

contents

HashSet не хранит дубликаты и не гарантирует порядок. Основан на HashMap. TreeSet хранит элементы в отсортированном порядке (алгоритмическая сложность O(log n)). Для работы с парами 'ключ-значение' используется HashMap.

sections

Исключения и Многопоточность

Обработка ошибок (try-catch, throws), создание потоков (Thread, Runnable), синхронизация и потокобезопасные коллекции.
contents

Исключения делятся на checked (проверяемые, например, IOException) и unchecked (непроверяемые, например, NullPointerException). Проверяемые исключения нужно обрабатывать в блоке try-catch или пробрасывать дальше через throws.

contents

Потоки создаются через наследование класса Thread или реализацию интерфейса Runnable. Для синхронизации доступа к общим ресурсам используется ключевое слово synchronized. Состояние гонки происходит, когда несколько потоков изменяют общие данные одновременно.

sections

Stream API и Работа с файлами (I/O)

Функциональное программирование: lambda-выражения, методы map, filter, collect. Ввод-вывод: работа с потоками InputStream/OutputStream, сериализация.
contents

Stream API позволяет обрабатывать коллекции декларативно. Промежуточные операции (filter, map) возвращают Stream, а терминальные (collect, forEach) — результат. Lambda-выражения используются для реализации функциональных интерфейсов.

contents

Класс File представляет путь к файлу или директории. FileInputStream/FileOutputStream используются для побайтовой записи. Сериализация — это процесс преобразования объекта в поток байтов (через интерфейс Serializable).

sections

Условный оператор if-else

Изучение конструкции if-else для ветвления программы в зависимости от логических условий. Разбор синтаксиса, блоков else if и else для обработки множества сценариев.
contents

Код выполняется последовательно, но условный оператор позволяет выполнять разные блоки кода в зависимости от условий. Например, 'если температура больше 25, включить кондиционер'. В Java используется конструкция if (условие) { ... }.

contents

Для добавления альтернативного действия используется else. Для проверки нескольких условий последовательно используется else if. Блок else выполняется, если ни одно из предыдущих условий не подошло.

sections

Целочисленные типы данных и их особенности

Детальный разбор примитивных типов для целых чисел: byte, short, int, long. Диапазоны значений, объем памяти, явное и неявное приведение типов.
contents

В Java есть 4 целочисленных типа: byte (1 байт, -128..127), short (2 байта), int (4 байта) и long (8 байт). Выбор типа зависит от диапазона хранимых чисел. int используется чаще всего.

contents

При работе с числами разных типов результат выражения приводится к самому большому типу (неявное приведение). Явное приведение (каст) нужно, чтобы поместить значение большего типа в переменную меньшего типа, но это может привести к переполнению.

sections

Типы данных для дробных чисел и логических значений

Изучение float и double для чисел с плавающей точкой, а также boolean для логических операций и составных условий.
contents

Для дробных чисел используются float (4 байта) и double (8 байт). double — предпочтительный тип из-за большей точности. По умолчанию дробные литералы в коде имеют тип double.

contents

Тип boolean может хранить только два значения: true или false. Он используется в условиях (if, while) и для создания логических флагов. Условия можно комбинировать с помощью && (логическое И) и || (логическое ИЛИ).

sections

Ссылочный тип String и управляющие символы

Изучение работы со строками в Java. Конкатенация, экранирование символов и использование управляющих последовательностей (например, \n для переноса строки).
contents

String — это ссылочный тип данных для работы со строками. Строки можно объединять с помощью оператора '+'. Для вывода двойных кавычек внутри строки их нужно экранировать (\"). Управляющая последовательность \n используется для переноса строки в выводе.

sections

Циклы в Java

Изучение различных видов циклов: while, do-while, for. Практика решения задач с использованием инкремента и бесконечных циклов.
contents

Цикл while выполняет блок кода, пока условие истинно. do-while гарантированно выполняет код хотя бы один раз. Цикл for удобен, когда известно точное количество итераций. Важно не забывать об изменении условия, иначе цикл станет бесконечным.

contents

Цикл for имеет компактную структуру: for (инициализация; условие; инкремент) { ... }. Он идеален для перебора элементов с использованием счетчика. Небрежное написание условия может привести к бесконечному циклу.

sections

Массивы: Основы и работа с памятью

Понятие массива как набора однотипных данных. Индексация, создание, заполнение и итерация по элементам с использованием циклов и свойства length.
contents

Массив — это структура данных для хранения фиксированного количества элементов одного типа. Доступ к элементам осуществляется по индексу. Индексация начинается с 0. Длина массива (количество элементов) доступна через свойство length (например, array.length).

contents

Обращение к элементу по индексу за пределами массива вызывает ошибку ArrayIndexOutOfBoundsException. Для перебора элементов массива удобно использовать цикл for с использованием array.length в условии, что делает код гибким к изменению размера массива.

sections

Введение в ООП: Классы и объекты

Основы объектно-ориентированного программирования: различие между классом (шаблон) и объектом (экземпляр). Создание полей (переменных экземпляра) и методов.
contents

Класс — это чертеж, описывающий состояние (поля) и поведение (методы) будущих объектов. Объект — конкретный экземпляр класса, создаваемый с помощью оператора new. У каждого объекта свои копии полей.

contents

Ссылочные переменные хранят не сам объект, а ссылку (адрес) на него в памяти (куча). Поэтому присваивание одной ссылочной переменной другой делает их ссылающимися на один и тот же объект. Это важно понимать для правильной работы с объектами.


questions

Какую IDE рекомендуется использовать в курсе для изучения Java?

answersCorrect

IntelliJ IDEA (версия Community).

explanations

IntelliJ IDEA — мощная и удобная среда разработки. Community версия бесплатна и содержит все необходимые функции для создания программ на Java.

answersWrong

Android Studio.

explanations

Android Studio предназначена для разработки под Android, в то время как курс использует IntelliJ IDEA для изучения языка Java.


questions

Как правильно назвать класс в Java для программы 'Hello World'?

answersCorrect

HelloWorld (с заглавной буквы, слитно).

explanations

В Java принято использовать PascalCase для именования классов. Это когда каждое слово пишется с большой буквы без пробелов. Название файла должно совпадать с именем класса.

answersWrong

helloWorld.