В соответствии со стандартом 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).