Java与C中的字符大小

ion*_*023 14 c java jvm character

为什么Java中的字符占用的空间是C中字符的两倍?

Pet*_*rey 26

在Java中,字符是16位,C是8位.

更普遍的问题是为什么会这样?

找出为什么你需要查看历史并就此主题得出结论/ 意见.

当C在美国开发时,ASCII在那里非常标准,你只需要7位,但是有8位你也可以处理一些非ASCII字符.看起来绰绰有余.许多基于文本的协议(如SMTP(电子邮件),XML和FIX)仍然只使用ASCII字符.电子邮件和XML编码非ASCII字符.二进制文件,套接字和流仍然只是8位字节本机.

顺便说一句:C可以支持更广泛的字符,但这并不简单 char

当Java开发时,16位似乎足以支持大多数语言.从那时起,unicode已扩展到65535以上的字符,Java必须添加对UTF-16字符的代码点的支持,并且可以是一个或两个16位字符.

因此,当时制作一个byte字节和char一个无符号的16位值是有意义的.

顺便说一句:如果你的JVM支持-XX:+UseCompressedStrings它,它可以使用字节而不是字符串只用于8位字符的字符串.

  • 确切地说,在C中它们至少是*8位. (4认同)