Константы (static final)

Тренажер по Java для пользователей с начальным уровнем подготовки.

Тренажер по Java

Константы в Java — это переменные, значение которых нельзя изменить после инициализации. Для их создания используется комбинация модификаторов static final.

  • static делает переменную общей для класса (экономия памяти).
  • final запрещает повторное присваивание значения.

По конвенции имена констант пишутся в UPPER_CASE (верхнем регистре) с разделением слов подчеркиванием. Это помогает визуализация кода и улучшает читаемость. В заданиях вы потренируетесь в правильном объявлении констант, их использовании в формулах и отличии от обычных переменных.

Список тем

1. Объявление константы

id: 40487_java_const_01_select

В этом задании вам предстоит объявить константу для числа Пи (π) в Java. В строке кода ниже заполните пропуски, выбрав из выпадающих списков правильные модификаторы доступа, модификаторы класса и тип данных. Обратите внимание, что константа должна быть публичной, статической и неизменяемой, а её тип должен соответствовать значению 3.141592653589793.

Нужно правильно расставить в пропуски предложенные варианты
input1S input2S input3S input4S PI = 3.141592653589793;
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

2. Попытка изменения

id: 40487_java_const_02_error

В этом фрагменте кода объявлена константа с модификаторами static final, что делает её неизменяемой. Однако далее в методе main предпринимается попытка изменить значение этой константы, из-за чего программа не скомпилируется. Найдите строку с ошибкой и удалите её (или закомментируйте), чтобы код стал корректным. Константы в Java нельзя переприсваивать после инициализации.

Найдите ошибку и исправьте
public class ConstantsDemo {
 
    public static final int MAX_USERS = 100;
 
    public static void main(String[] args) {
        MAX_USERS = 200; // пытаемся изменить константу
        System.out.println("Максимум пользователей: " + MAX_USERS);
    }
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

3. Именование констант

id: 40487_java_const_03_replace

В Java для именования констант (полей, объявленных как static final) принято использовать стиль UPPER_CASE: все буквы заглавные, а слова разделяются подчёркиваниями. В данном фрагменте кода константа объявлена с именем в camelCase (maxSize), что нарушает соглашения Code Style. Ваша задача — исправить имя константы, заменив его на корректный вариант в формате UPPER_CASE непосредственно в месте объявления. Обратите внимание, что изменение должно касаться только имени константы, остальной код остаётся без изменений.

Заполните пропуски
public class ConstantsExample {
    // Было maxSize, замените имя на стиль UPPER_CASE
    public static final int input1S = 100;

    public static void main(String[] args) {
        System.out.println("Максимальный размер: " + maxSize);
    }
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

4. Типы переменных

id: 40487_java_const_04_compare

В левой колонке приведены примеры объявлений переменных в Java, а в правой — их характеристики с точки зрения модификаторов доступа и изменяемости. Сопоставьте каждое объявление переменной с соответствующей характеристикой. Обратите внимание на использование ключевых слов static и final, которые определяют область видимости и возможность изменения значения переменной.

Сопоставьте строки в правой(нижней) части с соответствующими строками в левой(верхней) по порядковому номеру
static final int X
final int y
int z
Константа объекта (неизменяемое поле)
Константа класса
Изменяемая переменная
Сообщения
Проверить
Показать подсказку

5. Вычисление с константами

id: 40487_java_const_05_result

В приведённом фрагменте кода на Java определён класс с константами (налог и скидка) и методом, вычисляющим итоговую цену на основе базовой стоимости. Проанализируйте код и определите, какое значение будет выведено на экран при выполнении программы. Введите одно число (целое или с плавающей точкой) без дополнительных символов.

Что должно получиться?
public class PriceCalculator {
    private static final double TAX_RATE = 0.2;  // 20% налог
    private static final double DISCOUNT = 0.15; // 15% скидка
    private static final double BASE_PRICE = 200.0;

    public static double calculateFinalPrice() {
        double priceAfterDiscount = BASE_PRICE * (1 - DISCOUNT);
        double finalPrice = priceAfterDiscount * (1 + TAX_RATE);
        return finalPrice;
    }

    public static void main(String[] args) {
        double result = calculateFinalPrice();
        System.out.println(result);
    }
}
Сообщения
Проверить
Показать подсказку

6. Составные части

id: 40487_java_const_06_highlight

В данном задании вам нужно разметить части объявления константы в Java. В строке кода выделены три сегмента: модификатор неизменяемости, имя переменной и её значение. Выберите для каждого выделенного фрагмента соответствующий тип из предложенных вариантов: 'Модификатор неизменяемости', 'Имя переменной' или 'Значение'. Это упражнение поможет закрепить понимание структуры объявления констант с использованием static final.

Кликните по каждому выделенному фрагменту и выберите для него подходящий тип из списка под текстом.
private static {{final~|~t1}} String {{DEFAULT_NAME~|~t2}} = {{"User"~|~t3}};
Значение
Имя переменной
Модификатор неизменяемости
Сообщения
Проверить
Показать подсказку

7. Создание конфига

id: 40487_java_const_07_build

Из предложенных строк соберите корректный класс Config, содержащий несколько публичных статических констант (static final), которые обычно используются для хранения настроек приложения: адрес сервера (URL), номер порта (PORT) и таймаут соединения (TIMEOUT). Класс должен быть публичным, все поля — public static final. Некоторые строки являются лишними и не должны входить в итоговое решение. Порядок объявления констант между собой не влияет на работу программы.

Перетяните в правильном порядке строки из одного блока в другой
public class Config {
    public static final String URL = "https://api.example.com";
    public static final int PORT = 8080;
    public static final int TIMEOUT = 30_000;
}
    private static final String URL = "http://localhost";
    public final int PORT = 443;
    public static String DB_URL = "jdbc:mysql://localhost";
    public Config() {}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку
НайтиКурс.Ру