Примитивы: целые числа (int, long, byte, short)

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

Тренажер по Java

В Java для хранения целых чисел есть 4 примитивных типа: byte, short, int, long. Главное различие между ними — это размер занимаемой памяти и диапазон значений.

  • byte (8 бит): от -128 до 127.
  • short (16 бит): от -32,768 до 32,767.
  • int (32 бита): основной тип, до ±2 миллиардов.
  • long (64 бита): для огромных чисел. Литералы этого типа помечаются суффиксом L (например, 5000000000L).

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

Список тем

1. Тип и его размер (в битах)

id: 40433_prim_size_compare

В этом задании из тренажёра по Java в левой колонке перечислены примитивные целочисленные типы данных, а в правой — возможные варианты их размера в битах. Сопоставьте каждый тип со своим размером. Обратите внимание, что варианты справа перемешаны, лишних значений нет, для каждого типа существует ровно один подходящий размер.

Сопоставьте строки в правой(нижней) части с соответствующими строками в левой(верхней) по порядковому номеру
byte
short
int
long
8 бит
32 бита
16 бит
64 бита
Сообщения
Проверить
Показать подсказку

2. Сортировка по вместимости

id: 40433_prim_capacity_sequencing

В этом задании из тренажёра по Java в левой области показан список примитивных целочисленных типов данных Java в перемешанном порядке. Ваша задача — расставить эти типы так, чтобы они шли по возрастанию диапазона представимых значений: от наименьшего по вместимости типа к наибольшему. Обратите внимание, что все варианты нужно использовать, лишних элементов нет.

Расставьте строки в правильном порядке
byte
int
long
short
Сообщения
Проверить
Показать подсказку

3. Суффикс Long

id: 40433_prim_suffix_replace

Дополните фрагмент программы на Java так, чтобы объявление переменной типа long с очень большим целым литералом было корректным и код успешно компилировался. В конце числового литерала для типа long необходимо использовать подходящий суффикс, чтобы явно указать, что это значение относится к расширенному целочисленному типу, а не к стандартному int.

Заполните пропуски
public class Main {
    public static void main(String[] args) {
        long bigNumber = 3000000000input1S;
        System.out.println(bigNumber);
    }
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

4. Подбор типа для значений

id: 40433_prim_values_sort

Перед вами набор целочисленных литералов Java. Ваша задача — разнести их по категориям в соответствии с минимальным подходящим типом: byte, short или long. Учитывайте диапазоны примитивных типов: byte помещает только небольшие числа, short — побольше, а long используется для очень больших значений, выходящих за пределы int. Каждый элемент должен оказаться ровно в одной из категорий.

Перетяните элементы в соответствующие блоки
byte
short
long
0
100
127
-128
128
-129
32_767
-32_768
32_768
-32_769
2_147_483_647
-2_147_483_648
2_147_483_648L
-2_147_483_649L
Сообщения
Проверить
Показать подсказку

5. Выбор типа по контексту

id: 40433_prim_select_context_fill

В фрагменте Java‑кода объявляются переменные для хранения возраста человека, года и населения планеты. В пропусках вместо типов нужно из выпадающего списка выбрать подходящий примитивный целочисленный тип (byte, short, int или long), чтобы значения укладывались в допустимый диапазон и код был логичным.

Нужно правильно расставить в пропуски предложенные варианты
public class DemographyExample {
    public static void main(String[] args) {
        // возраст человека в годах
        input1S age = 35;

        // год текущего исследования
        input2S year = 2024;

        // оценка населения планеты (в людях)
        input3S worldPopulation = 8_000_000_000L;

        System.out.println("Age: " + age);
        System.out.println("Year: " + year);
        System.out.println("World population: " + worldPopulation);
    }
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

6. Переполнение byte

id: 40433_prim_overflow_predict

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

Выберите правильный вариант ответа
public class Main {
    public static void main(String[] args) {
        byte b = 127;
        b++;
        System.out.println(b);
    }
}
Сообщения
Проверить
Показать подсказку

7. Выделение типов

id: 40433_prim_declaration_highlight

Проанализируйте фрагмент Java‑кода с объявлением переменных разных типов. Ваша задача — для каждого выделенного фрагмента указать, является ли он целочисленным примитивным типом (byte, short, int, long) или нет. Это поможет научиться быстро распознавать целочисленные примитивы среди других типов (например, String, double, boolean) в объявлениях переменных.

Кликните по каждому выделенному фрагменту и выберите для него подходящий тип из списка под текстом.
{{byte~|~t1}} age = 25;
{{short~|~t2}} year = 2024;
{{int~|~t3}} daysInWeek = 7;
{{long~|~t4}} population = 8_000_000_000L;
{{double~|~t5}} pi = 3.14;
{{boolean~|~t6}} isActive = true;
{{String~|~t7}} name = "Alice";
Другой тип (не целочисленный примитив)
Целочисленный примитив (byte, short, int, long)
Сообщения
Проверить
Показать подсказку

8. Ошибка присваивания

id: 40433_prim_assignment_error

В приведённом фрагменте Java‑кода допущена ошибка в объявлении и инициализации переменной целочисленного типа. Значение, которое присваивается переменной, не укладывается в диапазон выбранного типа, из‑за чего код не компилируется. Исправьте строку с объявлением так, чтобы тип и значение были совместимы и программа успешно собиралась.

Найдите ошибку и исправьте
public class Main {
    public static void main(String[] args) {
        // Сохраним точный возраст пользователя в годах
        byte age = 200;
        System.out.println(age);
    }
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку
НайтиКурс.Ру