Как происходит расширение типа в случае положительных и отрицательных моментов в java?

Есть ли разница между преобразованием типов в случае положительных и отрицательных чисел?

Например, если у нас есть

short a = 100;

и положи это в

int b = a;

если мы изменим «100» на «-100», какая разница? Я попытался найти его в IDEA, но не нашел разницы, но у меня есть вопросы от моего наставника.

Нет ничего авторитетнее JLS. Ваш наставник, вероятно, хочет, чтобы вы сами нашли ответ в тех материалах, которые он / она уже использовали для вас, или там, или в подобных материалах.

T.J. Crowder 13.09.2018 18:45

Не совсем то же самое, что вы спрашиваете, но в этом вопросе есть полезная информация: stackoverflow.com/questions/11990681/overflowing-short-in-ja‌ ва

mypetlion 13.09.2018 18:45
0
2
95
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Отказ от ответственности: Поскольку это вопрос домашнего задания, то, что я здесь говорю, может быть не «ожидаемым» ответом.

Здесь задействованы два преобразования. Первый - это сужающееся примитивное преобразование из int (буквальное значение 100 оценивается как значение типа int) в short. Второй - это расширяющееся примитивное преобразование из short в int.

Второе преобразование никогда не потеряет информацию, согласно JLS §5.1.2:

A widening primitive conversion does not lose information about the overall magnitude of a numeric value in the following cases, where the numeric value is preserved exactly:

  • from an integral type to another integral type

  • from byte, short, or char to a floating point type

  • from int to double

  • from float to double in a strictfp expression (§15.4)

Первое преобразование выполняется так, согласно JLS §5.1.3

A narrowing conversion of a signed integer to an integral type T simply discards all but the n lowest order bits, where n is the number of bits used to represent type T. In addition to a possible loss of information about the magnitude of the numeric value, this may cause the sign of the resulting value to differ from the sign of the input value.

И -100, и 100 могут быть представлены с помощью short, диапазон которого составляет -65536 ... 65535, поэтому здесь также не теряется информация.

Короче говоря, не имеет значения, используете ли вы 100 или -100, в результате b сохранит значение 100 или -100 соответственно.

Другие вопросы по теме