В Java Enum (перечисление) — это специальный тип данных, который позволяет переменной быть набором предопределенных констант. Это делает код более читаемым и защищенным от ошибок по сравнению с использованием обычных чисел или строк.
Типичные примеры использования: дни недели, цвета, статусы заказа (NEW, PROCESSING, DONE). Перечисления объявляются с помощью ключевого слова enum.
В отличие от простых списков, Enum в Java — это полноценные классы. Они могут иметь поля, конструкторы и методы. Основные встроенные методы:
values()— возвращает массив всех констант перечисления.valueOf("NAME")— возвращает константу по имени.ordinal()— возвращает порядковый номер константы (начиная с 0).
Изучение и тренировка работы с Enum позволит вам писать строгий и понятный код. Используйте этот тренажер, чтобы закрепить синтаксис и методы.
- Модуль 1: Первая программа и структура
- Модуль 2: Переменные и типы данных
- Объявление и инициализация переменных.
- Примитивы: целые числа (int, long, byte, short).
- Примитивы: дробные числа (double, float).
- Примитивы: логический тип (boolean).
- Примитивы: символьный тип (char).
- String — основы работы со строками.
- Приведение типов (Casting): расширение и сужение.
- Область видимости переменных (Scope).
- Модуль 3: Операторы
- Модуль 4: Управляющие конструкции
- Модуль 5: Массивы и Строки (Advanced)
- Создание и заполнение массива.
- Доступ к элементам по индексу.
- Свойство length и перебор массива.
- Цикл for-each для массивов.
- Многомерные массивы.
- Методы String: length, charAt, isEmpty.
- Манипуляции: substring, concat, replace.
- Сравнение строк: equals vs ==.
- Разделение строк (split) и trim.
- StringBuilder (изменяемые строки).
- Модуль 6: Методы
- Модуль 7: Классы и Объекты (ООП Часть 1)
- Модуль 8: Капсуляция и Модификаторы
- Модуль 9: Наследование и Полиморфизм (ООП Часть 2)
- Модуль 10: Обработка исключений
- Модуль 11: Коллекции и Дженерики
- Модуль 12: Функциональный стиль (Java 8+)
- Модуль 13: Полезные стандарты
1. Объявление Enum
В данном задании представлен фрагмент кода, в котором объявляется перечисление (enum) для сезонов года. В коде есть несколько пропусков, обозначенных как input1, input2 и т.д. Вам необходимо выбрать из выпадающего списка подходящие элементы, чтобы получить корректный синтаксис объявления enum в Java. Обратите внимание на ключевое слово для объявления перечисления и правильный формат записи констант.
public input1S Season {
input2S,
input3S,
input4S,
input5S
}2. Обращение к константе
В этом задании вы отработаете обращение к константам перечисления (enum) в Java. В коде объявлено перечисление Day, представляющее дни недели. В методе main необходимо присвоить переменной today конкретное значение из этого перечисления, чтобы программа вывела ожидаемое приветствие. Заполните пропуск корректным обращением к константе, не меняя остальную структуру кода.
public class Main {
enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
public static void main(String[] args) {
Day today = Day.input1S;
System.out.println("Сегодня " + today);
}
}3. Enum в switch-case
Из предложенных строк соберите корректный фрагмент Java-кода, демонстрирующий использование конструкции switch-case для проверки значения enum-переменной типа Priority. Код должен объявить переменную со значением LOW и вывести соответствующее сообщение в консоль. Некоторые строки являются лишними и не должны входить в решение.
Priority level = Priority.LOW;switch (level) { case LOW: System.out.println("Низкий приоритет"); break;} case Priority.LOW: continue;4. Метод ordinal()
Проанализируйте приведённый фрагмент кода на Java, в котором используется перечисление (enum) и вызывается метод ordinal() для одной из его констант. Определите, какое целое число будет выведено на экран в результате выполнения программы. Выберите правильный вариант ответа из предложенных.
enum Direction { NORTH, EAST, SOUTH, WEST }
public class Main {
public static void main(String[] args) {
Direction dir = Direction.EAST;
System.out.println(dir.ordinal());
}
}5. Методы Enum
В левой колонке перечислены названия методов класса Enum в Java. В правой колонке приведены их краткие описания. Сопоставьте каждый метод с его описанием. Обратите внимание, что в правой колонке нет лишних вариантов, но порядок перемешан.
values()valueOf()name()ordinal()6. Синтаксис полей Enum
В данном фрагменте кода объявлен перечисляемый тип (enum) Planet, который содержит константы планет с параметрами массы и радиуса. Однако в коде допущена синтаксическая ошибка, из-за которой компиляция невозможна. Найдите и исправьте ошибку, чтобы код мог быть скомпилирован.
public enum Planet { MERCURY(3.303e+23, 2.4397e6), VENUS(4.869e+24, 6.0518e6), EARTH(5.976e+24, 6.37814e6), MARS(6.421e+23, 3.3972e6), JUPITER(1.9e+27, 7.1492e7), SATURN(5.688e+26, 6.0268e7), URANUS(8.686e+25, 2.5559e7), NEPTUNE(1.024e+26, 2.4746e7) private final double mass; private final double radius; Planet(double mass, double radius) { this.mass = mass; this.radius = radius; } public double getMass() { return mass; } public double getRadius() { return radius; }}7. Перебор значений
Перед вами фрагмент кода на языке Java, демонстрирующий перебор значений перечисления (enum) с помощью цикла for-each. Внимательно изучите код. Ваша задача — отметить (кликнуть) два элемента: вызов метода, который возвращает массив всех констант перечисления, и переменную, которая используется в цикле для последовательного получения каждого значения. Не отмечайте другие части кода, такие как ключевые слова, фигурные скобки или операторы вывода.
public class Main {
enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
public static void main(String[] args) {
for ({{Day~|~t1}} {{day~|~t2}} : Day.{{values()~|~t3}}) {
System.out.println(day);
}
}
}8. Структура Enum
Разметьте части кода Enum, указав для каждого выделенного фрагмента, является ли он константой, полем класса или конструктором. Обратите внимание, что константы перечисления объявляются в начале, поля класса — это переменные внутри Enum, а конструктор используется для инициализации констант.
public enum DayOfWeek {
{{MONDAY~|~t1}}("Понедельник"),
{{TUESDAY~|~t2}}("Вторник"),
{{WEDNESDAY~|~t3}}("Среда"),
{{THURSDAY~|~t4}}("Четверг"),
{{FRIDAY~|~t5}}("Пятница"),
{{SATURDAY~|~t6}}("Суббота"),
{{SUNDAY~|~t7}}("Воскресенье");
private final {{dayName~|~t8}};
{{DayOfWeek~|~t9}}(String dayName) {
this.dayName = dayName;
}
public String getDayName() {
return dayName;
}
}