Найти в Дзене

Java курс для «чайников». Урок 8 | Преобразование типов в Java

Оглавление

При работе с примитивными данными, часто возникает необходимость преобразовывать один тип данных к другому. Например, мы хотим преобразовать целое число к дробному или наоборот.

Все преобразования можно разделить на два типа: явные и неявные. Рассмотрим каждый тип отдельно.

Неявные преобразования

Неявные преобразования характерны для присваивания с расширением типа. Например, мы присваиваем byte к int, или float к double.

Неявное преобразование byte к int
Неявное преобразование byte к int

Ниже будет представлена схема, по которой работают автоматические преобразования типов.

-2

Черными сплошными стрелками показаны неявные преобразования без потери точности.

Черными прерывистыми стрелками показаны неявные преобразования с возможной потерей точности.

Явные преобразования

Когда невозможно произвести неявное преобразование, программисту нужно сказать компилятору о том, что вам такое преобразование необходимо.

-3

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

Также, при преобразовании дробных типов к целочисленным, дробная часть отбрасывается. Таким образом, остается только целая часть.

Преобразования при математических операциях

Что, если необходимо сложить (или выполнить другую операцию) с двумя или более числами разных типов? В этом случае нужно придерживаться четырех правил:

  1. Если в одном из операндов присутствует тип double, то остальной операнд, также преобразуется в double.
  2. Если в одном из операндов присутствует тип float, то остальной операнд, также преобразуется в float.
  3. Если в одном из операндом присутствует тип long, то остальной операнд, также преобразуется в long.
  4. Иначе все операнды преобразуются к типу int.

Данные правила необходимо проверять последовательно, начиная с первого. Остановиться следует на том правиле, которое выполняется. Рассмотрим пример:

-4

Чтобы понять, что происходит, обратимся к правилам преобразования. Среди операндов нет типа double, переходим к правилу 2. Типа float тоже нет, как и long, соответственно, все операнды преобразуются к типу int (правило 4). После того, как выполнилась операция сложения, результат будет типа int, который мы пытаемся записать в тип short. Данное преобразование не может быть выполнено неявно, поэтому необходимо его выполнить явно, указав желаемый тип в скобках.

Предлагаем решить тест

На этом все. Подписывайтесь на канал, чтобы не пропустить новые уроки!