为什么Java char原语会占用2个字节的内存?

有没有理由为什么Java char原始数据类型是2字节不像C这是1字节?

谢谢

当Java最初设计时,预计任何Unicode字符都适合2个字节(16位),因此charCharacter是相应设计的。 实际上,Unicode字符现在最多可以需要4个字节。 因此,内部Java编码UTF-16要求补充字符使用2个代码单元。 基本多语言平面中的字符(最常见的)仍然使用1.每个代码单元使用Java char 。 这篇Sun文章解释得很好。

Java中的char是UTF-16编码的,每个字符至少需要16位存储空间。

在Java中,字符以UTF-16编码,使用2个字节,而普通的C字符串或多或少只是一堆字节。 当设计C时,使用ASCII (仅涵盖英语字符集)被认为是足够的,而Java设计者已经考虑了国际化。 如果要将Unicode与C字符串一起使用, UTF-8编码是首选方法,因为它将ASCII作为子集,并且不使用0字节(与UTF-16不同),它用作字符串结尾C.这样的字符串结束标记在Java中不是必需的,因为字符串在这里是复杂类型,具有明确的长度。

在以前的语言中,使用C ASCII表示法。 对于127个独特的符号语言字符 ,范围是127。

虽然JAVA附带了一个名为“国际化”的function,即所有人类可读字符(包括区域符号 )也被添加到其中,并且范围也增加了,因此需要更多的内存,系统统一所有这些符号是“标准Unicode系统” ,这样统一需要JAVA中的附加字节。

第一个字节保持不变,ASCII字符的范围为127,如C,C ++,但统一字符将被附加到它们。

因此,JAVA中的char为16位,C中为char的8位。

Java™教程:char数据类型是单个16位Unicode字符。 它的最小值为’\ u0000’(或0),最大值为’\ uffff’(或65,535(含))。

Java用作国际化,因此它在不同语言中工作并且需要空间超过一个字节,这就是为什么它在char中占用2byte的空间。 例如,中文不能处理一个字节的字符。

我们知道c支持ASCII,其中java支持Unicode,其中包含3个内容,即1-ASCII 2-extended ASCII 3-本地语言字符ASCII是unicode的子集.ASCII仅支持英语,因为Unicode支持跨国语言。另外java字符在UTF-16中编码,使用2个字节。由于所有原因,因为Unicode是ASCII的扩展版本,所以它使用16位16位内存。