Это
double d1 = 0d;
является примером литерала, а символ после цифр является суффиксом. Там нет ни одного для short
. Вам необходимо разыграть:
short s = (short)0;
Они определены в 2.4.4 спецификации языка, в частности 2.4.4.2 расскажет вам о целочисленных литералах, где вы увидите, что нет способа выразить short
с помощью литерала. Кроме того, integer-type-suffix
являются:
U u L l UL Ul uL ul LU Lu lU lu
, которые представляют различные типы со знаком / без знака типа int / long. Опять же, нет способа выразить short
с использованием литерала.