Ответ 1
То, о чем вы говорите, это целостный литерал (1
) по сравнению с длинным литералом (1L
). В Java на самом деле нет такой вещи, как короткий или байтовый литерал. Но это обычно не имеет значения, потому что существует неявное преобразование из целых литералов в типы byte
, short
и char
. Таким образом:
final byte one = 1; // no typecast required.
Неявное преобразование допускается только в том случае, если литерал находится в требуемом диапазоне. Если вам не нужен тип; например.
final byte minusOne = (byte) 255; // the true range of byte is -128 .. +127
Существуют и другие случаи, когда требуется явное преобразование; например для устранения неоднозначности перегрузки метода или для принудительной интерпретации в выражении. В таких случаях вам нужно использовать трансляцию для преобразования.
Ваш пример - это еще один из этих случаев.
Но суть в том, что нет синтаксиса Java для выражения byte
или short
литералов.