根据Java标准,short
和char
类型都使用2个字节,所以当我编写类似的东西时:
char ch = 'c';
short s = ch;
有一个错误说“可能会失去精确度”。我在这里缺少什么?
答案 0 :(得分:39)
char
未签名,short
已签名。
因此,虽然它们都是2字节长,但它们将第16位用于不同目的。
char
类型的范围是0到2 ^ 16 - 1(0到65535)。
short
范围是-2 ^ 15到2 ^ 15 - 1(-32,768到32,767)。
答案 1 :(得分:11)
区别在于char
未签名,short
已签名。因此,char
的值范围的一半太大而无法表示为short
(当然,在对称性中,char
不能表示任何负值short
}))。