2025-11-20 06:41:55
Java里char是16位,表示一个字节的Unicode字符,数值范围从-32768到32767,包含所有常见符号和汉字。比如字母A是65,汉字“中”对应U+4E2D,存成两个字节就能显示。
为什么是16位呢?因为Java用Unicode标准编码字符,而Unicode基本多语言平面(BMP)有65536个码点,正好对应16位二进制数。16位补码能表示-32768到32767,刚好覆盖所有可见字符。比如小写字母z是122,大写Z是90,符号$是36,汉字范围从U+4E00到U+9FFF。数据来源是《Java虚拟机规范》和Unicode 15.1标准,里面明确说char占16位,用UTF-16编码存储。比如存“好”字,先转成U+597D,再拆成高字节D6和低字节E5,合起来就是两个字节。所以16位足够但刚好够用,多一位会浪费,少一位就不够了。
本题链接: