Приведение типов (casting) в Java нужно, когда значения разных числовых типов участвуют в выражениях или присваиваниях. Расширение (например, int → long → double) обычно происходит автоматически. Сужение (например, double → int) требует явного приведения: (int), потому что возможна потеря дробной части или переполнение. В практических заданиях онлайн вы научитесь читать такие места в коде и понимать, какой результат получится.
Пример:
double d = 3.9; int x = (int) d; // x = 3
- Модуль 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. Сопоставь: расширение vs сужение
В левой колонке указаны направления приведения примитивных числовых типов в Java (например, из меньшего диапазона в больший или наоборот). В правой колонке описаны свойства такого приведения: выполняется ли оно автоматически, нужно ли явное приведение через скобки, и возможна ли потеря данных. Сопоставьте каждый вариант приведения слева с единственным подходящим описанием справа.
byte → intint → longint → doubledouble → intlong → intfloat → long2. Заполни выражение нужными приведениями
В фрагменте Java-кода есть несколько пропусков. Ваша задача — выбрать подходящие варианты из выпадающего списка так, чтобы вычисления с делением выполнялись в типе double там, где нужна дробная часть, а затем результат корректно приводился к int и сохранялся в целочисленную переменную. Обратите внимание: без нужных приведений/литералов деление int на int даст целое число.
int total = 7;
int count = 2;
double avg = input1S total / count;
int scaled = input2S (avg * input3S);
System.out.println(scaled);3. Предскажи результат: дробная часть и (int)
В коде ниже нужно заполнить пропуски, выбирая варианты из списка. Цель — сделать так, чтобы выражение с делением считалось как вещественное (без потери дробной части), а затем результат можно было безопасно сохранить в целочисленной переменной через явное приведение. Подберите нужные приведения типов и литерал так, чтобы код компилировался и вывод был предсказуемым.
int sum = 9;
int n = 4;
// хотим получить 9 / 4 = 2.25
input1S avg = (input2S sum) / input3S;
int roundedDown = (int) avg;
System.out.println(roundedDown);4. Исправь ошибку: целочисленное деление там, где ждут дробь
В этом фрагменте Java-кода программа пытается посчитать среднее значение и сохранить его в переменную типа double, но из-за выбранных типов в выражении деление выполняется как целочисленное, поэтому дробная часть теряется. Найдите строку с вычислением среднего и исправьте её одним локальным изменением так, чтобы результат деления стал вещественным и вывод соответствовал ожидаемой логике.
public class Main { public static void main(String[] args) { int sum = 5; int count = 2; double avg = sum / count; System.out.println(avg); }}5. Впиши явное приведение для сужения
В фрагменте Java-кода вычисляется среднее значение как число с плавающей точкой, но затем его нужно сохранить в переменную целочисленного типа. Такое присваивание является сужающим преобразованием и требует явного приведения типов. Заполните пропуски так, чтобы код компилировался, выполнялся и выводил целочисленную часть среднего значения.
public class Main {
public static void main(String[] args) {
int sum = 7;
int count = 2;
double avg = (double) sum / count;
int whole = input1S avg;
System.out.println(whole);
}
}6. Выстрой шаги: как происходит вычисление выражения с разными типами
Перед вами перемешанные шаги, описывающие общий порядок вычисления выражения в Java, когда в нём участвуют разные числовые типы (например, int и double). Расставьте строки сверху вниз так, чтобы получилась логичная последовательность: от определения типов операндов до получения результата и, при необходимости, приведения при присваивании.
7. Собери код: явное приведение и вывод результата
Из предложенных строк соберите корректную Java-программу, которая показывает сужающее преобразование: берёт значение типа double, явно приводит его к int и выводит в консоль сначала исходное значение, затем результат после приведения. Одна строка в банке лишняя и в итоговый код попадать не должна.
int narrowed = (int) value;public class Main { System.out.println(narrowed); public static void main(String[] args) { int narrowed = value; double value = 3.9; System.out.println(value); }}