Short и char введите в Java

В соответствии со стандартом Java оба типа short и char используют 2 байта, поэтому, когда я кодирую что-то вроде:

char ch = 'c';
short s = ch;

Ошибка "возможная потеря точности". Что мне здесь не хватает?

Ответ 1

char не подписан, short подписан.

Таким образом, хотя они имеют длину 2 байта, они используют шестнадцатый бит для разных целей.

Диапазон типа char 0 до 2 ^ 16 - 1 (от 0 до 65535).

short диапазон составляет -2 ^ 15 до 2 ^ 15-1 (от -32 768 до 32 767).

Ответ 2

Разница в том, что char не имеет знака, short подписан. Таким образом, половина диапазона значений char слишком велика, чтобы быть представлена ​​как short (и, конечно, в симметрии char не может представлять ни одно из отрицательных значений short can).