Что такое числовое продвижение? - PullRequest
12 голосов
/ 23 февраля 2009

Кто-нибудь может сказать, что такое числовое продвижение?

Ответы [ 4 ]

19 голосов
/ 23 февраля 2009

Числовое продвижение - это преобразование меньшего числового типа в больший числовой тип, чтобы могли выполняться целочисленные операции и операции с плавающей точкой. При численном повышении значения byte, char и short преобразуются в значения int. При необходимости значения int также преобразуются в длинные значения. При необходимости значения long и float преобразуются в двойные значения.

2 голосов
/ 28 февраля 2017

Числовые правила продвижения

  1. Если два значения имеют разные типы данных, Java автоматически переведет одно из значений к большему из двух типов данных.

  2. Если одно из значений является целым, а другое - с плавающей точкой, Java автоматически преобразует интегральное значение в тип данных значения с плавающей точкой.

  3. Меньшие типы данных, а именно byte, short и char, сначала переводятся в int каждый раз, когда они используются с двоичным арифметическим оператором Java, даже если ни один из операндов не является int.

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

1 голос
/ 23 февраля 2009

Числовое продвижение - это преобразование операнда (хотя бы одного из задействованных чисел) в общий тип.

Например:

int i = 10;
double d1 = 2.5;
double d2 = d1 * i;

В этом случае i повышается до двойного, чтобы можно было выполнить вычисление. В некотором смысле вы можете думать, что это аналогично боксу, но бокс включает в себя перемещение от структуры к объекту (из стека в кучу). Но использование аналогии дает представление о том факте, что интегральное значение превращается в число с плавающей запятой для выполнения вычисления.

0 голосов
/ 23 февраля 2009

Если вы посмотрите здесь , вы увидите следующую цитату:

Числовое продвижение (§5.6) приносит операнды числового оператора к общий тип, так что операция может быть выполненным.

Они ссылаются на этот раздел , где приводятся различные примеры. Классический пример - это случай типа float. Целое число преобразуется в число с плавающей точкой, поэтому умноженный результат является числом с плавающей точкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...