Классы-обертки (Integer, Double и др.)

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

Тренажер по Java

В Java есть классы-обёртки для примитивов: Integer, Double, Boolean и др. Они нужны, когда требуется объект: например, в коллекциях (List), при использовании null, в обобщениях и некоторых API. Обёртки содержат полезные методы: valueOf(), parseInt(), константы MIN_VALUE/MAX_VALUE, сравнение через compareTo(). Пример: Integer x = Integer.valueOf("42"); int y = Integer.parseInt("42");. В этом практическом тренажёре — задания по использованию обёрток в java задачах и разбору типичных ошибок.

Список тем

1. Разложить: примитивы vs обёртки

id: 40505_wrap_01_sort_groups

Перед вами список элементов, представляющих типы данных в Java. Ваша задача — распределить каждый элемент по одной из двух категорий: «примитивные типы» или «классы-обёртки». Примитивные типы — это базовые типы данных языка (например, int, char), а классы-обёртки — это соответствующие им объектные классы из стандартной библиотеки Java (например, Integer, Character). Обратите внимание, что каждый элемент однозначно относится только к одной категории.

Перетяните элементы в соответствующие блоки
Примитивные типы
Классы-обёртки
int
Integer
double
Double
boolean
Boolean
char
Character
long
Long
float
Float
byte
Byte
Сообщения
Проверить
Показать подсказку

2. Выбрать тип для коллекции

id: 40505_wrap_02_selectfill_generics

В данном фрагменте кода объявляются три переменные, которые затем добавляются в список. Выберите из выпадающего списка подходящие классы-обертки для каждой переменной, чтобы код успешно компилировался и выполнялся. Обратите внимание на тип литералов (целое число, число с плавающей точкой, целое число с суффиксом L).

Нужно правильно расставить в пропуски предложенные варианты
input1S num1 = 10;
input2S num2 = 3.14;
input3S num3 = 100L;
List<Number> list = new ArrayList<>();
list.add(num1);
list.add(num2);
list.add(num3);
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

3. Заполнить вызовы parseXxx и valueOf

id: 40505_wrap_03_replace_parse_valueof

В этом задании вам предстоит заполнить пропуски в коде, который демонстрирует преобразование строк в числа с использованием классов-обёрток Integer и Double. Код получает числовые значения из строк двумя способами: через статические методы parseXxx и через метод valueOf. Вам нужно вписать имена методов и строковые литералы так, чтобы программа корректно компилировалась и выводила ожидаемый результат.

Заполните пропуски
public class Main {
    public static void main(String[] args) {
        String strInt = "123";
        String strDouble = "45.67";
        
        // Преобразование строки в int с помощью parseInt
        int intValue = Integer.input1S(strInt);
        
        // Преобразование строки в double с помощью parseDouble
        double doubleValue = Double.input2S(strDouble);
        
        // Получение объекта Integer из строки
        Integer integerObj = Integer.input3S(strInt);
        
        // Получение объекта Double из строки
        Double doubleObj = Double.input4S(input5S);
        
        System.out.println("intValue: " + intValue);
        System.out.println("doubleValue: " + doubleValue);
        System.out.println("integerObj: " + integerObj);
        System.out.println("doubleObj: " + doubleObj);
    }
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

4. Исправить падение при работе с null

id: 40505_wrap_04_error_null_unboxing

В данном фрагменте кода на Java используется класс-обертка Integer. При выполнении программы может возникнуть исключение NullPointerException из-за попытки распаковки null-значения в примитивный тип. Найдите строку, содержащую ошибку, и исправьте её, обеспечив безопасную обработку возможного null-значения. Исправление должно быть локальным и однозначным.

Найдите ошибку и исправьте
public class Main {
    public static void main(String[] args) {
        Integer a = 10;
        Integer b = null;
        Integer c = 20;
        int sum = a + b + c;
        System.out.println("Sum: " + sum);
    }
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

5. Что вернёт == и equals у Integer

id: 40505_wrap_05_predict_cache_equals

Проанализируйте приведённый код на Java. Обратите внимание на способы создания объектов Integer: с помощью оператора new, метода valueOf и автоупаковки. Учтите, что значение 1000 выходит за пределы стандартного кэша целых чисел (-128..127). Выберите последовательность логических значений (true/false), которая будет выведена в результате выполнения кода.

Выберите правильный вариант ответа
public class Main {
    public static void main(String[] args) {
        Integer a = new Integer(1000);
        Integer b = Integer.valueOf(1000);
        Integer c = 1000;
        Integer d = new Integer(1000);
        
        System.out.println("a == b: " + (a == b));
        System.out.println("a == c: " + (a == c));
        System.out.println("a == d: " + (a == d));
        System.out.println("a.equals(b): " + a.equals(b));
        System.out.println("a.equals(c): " + a.equals(c));
        System.out.println("a.equals(d): " + a.equals(d));
    }
}
Сообщения
Проверить
Показать подсказку

6. Отметить вызовы методов обёрток

id: 40505_wrap_06_click_target_wrapper_methods

Внимательно изучите приведённый фрагмент кода на Java. Ваша задача — найти и отметить все места, где вызываются методы классов-обёрток (например, Integer, Double). Обратите внимание на такие методы, как parseInt(), valueOf(), compareTo(), toString(). Не отмечайте примитивные операции (например, арифметические), объявления переменных или вызовы методов, не относящихся к классам-обёрткам.

Кликните по всем фрагментам, которые подходят под условие задания.
public class WrapperDemo {
    public static void main(String[] args) {
        int primitiveInt = 42;
        Integer wrappedInt = {{Integer.valueOf(primitiveInt)~|~t1}};
        String strNumber = "123";
        int parsed = {{Integer.parseInt(strNumber)~|~t2}};
        Double price = {{Double.valueOf(99.99)~|~t3}};
        String priceStr = {{price.toString()~|~t4}};
        Integer a = 10;
        Integer b = 20;
        int comparison = {{a.compareTo(b)~|~t5}};
        double sum = primitiveInt + {{parsed~|~t6}};
        System.out.println("Result: " + priceStr);
    }
}
Сообщения
Проверить
Показать подсказку
НайтиКурс.Ру