Warum ist das Casting von Short zu Char eine einschränkende Umwandlung?

Eine Verengungskonvertierung wird durchgeführt, wenn ein Datentyp, der einen größeren Wert enthalten kann, in einen Datentyp umgewandelt wird, der maximal einen kleineren Wert enthalten kann.

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

Jedoch verstehe ich nicht, warum ein Kurzschluss in ein Zeichen eine einschränkende Konvertierung ist, aber ich habe die Intuition, dass es mit signierten / nicht signierten dieser beiden Datentypen zusammenhängt, aber ich kann nicht erklären, warum.

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

Es sieht so aus, als wäre es eine verbreiternde Umwandlung oder zumindest keine Verengung oder Verbreiterung, da beide 16 Bit groß sind und die gleiche Anzahl von Werten enthalten können.

    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

Antworten auf die Frage(4)

Ihre Antwort auf die Frage