Отказ от ответственности : Так как это домашнее задание, то, что я здесь говорю, может не быть "ожидаемым" ответом.
Здесь есть два преобразования.Первый - это сужающее примитивное преобразование из int
(литерал 100
оценивается в значение типа int
) в short
.Второе преобразование представляет собой расширяющееся примитивное преобразование из short
в int
.
Второе преобразование никогда не потеряет информацию в соответствии с JLS §5.1.2 :
Расширяющее примитивное преобразование не теряет информацию об общей величине числового значения в следующих случаях, когда числовое значение сохраняется точно:
от целочисленного типа к другому целочисленному типу
от байта, короткого символа или символа до типа с плавающей запятой
от int до удвоения
от float до double в выражении строгого выражения (§15.4)
Первое преобразование выполненотаким образом, согласно JLS §5.1.3
При сужающемся преобразовании целого числа со знаком в целочисленный тип T просто отбрасываются все, кроме n младших битов, где nчисло битов, используемых для представления типа T. В дополнение к возможной потере информацииЧто касается величины числового значения, это может привести к тому, что знак полученного значения будет отличаться от знака входного значения.
И -100
, и 100
могут быть представлены с short
, диапазон которого равен -65536 ... 65535, поэтому здесь также не теряется информация.
Короче говоря, не имеет значения, используете ли вы 100
или -100
, результат будетb
будет хранить значение 100
или -100
соответственно.