Почему приведение к короткому типу символа является сужающим преобразованием?

Сужающее преобразование - это помещение типа данных, который может содержать большее значение, в тип данных, который может содержать максимум меньшее значение.

long l = 4L;
int i = (int)l;

Однако я не понимаю, почему короткое замыкание на символ является сужающим преобразованием, но у меня есть интуиция, это связано с подписанным / неподписанным из этих двух типов данных, но я не могу объяснить, почему.

short s = 4; // short max value is 32767
char c = (char)s; // char max value is 65535 

Похоже, что это будет расширение с расширением или, по крайней мере, ни сужение, ни расширение, поскольку они оба имеют 16 бит и могут содержать одинаковое количество значений.

    System.out.println((int)Character.MIN_VALUE); //0
    System.out.println((int)Character.MAX_VALUE); //65535 
    System.out.println(Short.MIN_VALUE); //-32768
    System.out.println(Short.MAX_VALUE); //32767
    //65535 = 32768+32767

Ответы на вопрос(2)

Ваш ответ на вопрос