回答
在Java中char
是UTF-16编码,这至少需要存储对每个字符的16位。
在最初设计Java时,预计任何Unicode字符都适合2个字节(16位),因此设计了char
和Character
。实际上,一个Unicode字符现在可能需要多达4个字节。因此,内部Java编码UTF-16需要使用2个代码单元的补充字符。基本多语言平面中的字符(最常见的)仍然使用1. Java char
用于每个代码单元。这Sun article解释得很好。
我确信Joel会欣赏“每个程序员应该知道字符编码的插件:http://joelonsoftware.com/articles/Unicode.html – fooMonster 2011-11-10 14:56:42
的Java作为国际化的话,它的工作在不同的语言,需要的空间多于一个字节,这就是为什么在字符空间对其采取2字节。 因为例如中文不能处理字节的一个字节。
在像C ASCII以前的语言符号被使用。 而范围是127,对于127 独特符号和语言字符。
虽然JAVA提供了一个名为“国际”特征,也就是所有的人类可读字符(包括区域符号)也被添加进去,和该范围也增加,所以更多的存储器需要系统统一所有这些符号是“Unicode标准体系”,并让 这统一需要JAVA额外的字节。
第一字节保持原样和ASCII字符范围至127如C,C++,但统一字符比附加到他们。
所以在JAVA 16位为炭和在C.
炭8位正如我们知道的C suppors ASCII其中如Java支持Unicode它含有3-事情是 1-ASCII 2扩展ASCII 3本地语言字符的ASCII 是unicode.ASCII的子集,仅支持其中为Unicode支持跨国公司language.otherwise Java字符是UTF-16使用2 byte.for所有的原因,并为统一内编码英语是ASCII的扩展版本,所以它使用8位的16位。
Java™教程: char数据类型是一个单一的16位Unicode字符。它的最小值为'\ u0000'(或0),最大值为'\ uffff'(或65,535)。
- 1. 为什么java使用2个字节来存储char值
- 2. 为什么read()一次读取一个字节,如果char是2个字节?
- 3. 什么是内存占用?
- 4. 为什么MKMapKit占用大量内存
- 5. 为什么我需要在字节和short上显式地转换char原语?
- 6. 为什么java中的字符大小是2个字节?
- 7. char转换为字节? (JAVA)
- 8. 这个程序为什么占用这么多内存?
- 9. 这个字节字符串实际占用多少内存?
- 10. 的java为什么不同内存使用原语与在2D对象阵列
- 11. 为什么内存中的单词总是包含2^n个字节?
- 12. 什么是围棋的内存占用
- 13. Doctrine 2内存占用
- 14. 为什么sizeof显示char的4个字节?
- 15. 为什么在Rust中'char'的大小是4个字节?
- 16. 为什么字节寻址内存而不是4字节寻址内存?
- 17. 为什么我的python进程会占用这么多内存?
- 18. 为什么我的UIImage占用这么多内存?
- 19. 什么是Java EE servlet的(内存)占用空间?
- 20. 为什么短为2字节对齐?
- 21. 为什么一些原语有字节码,有些则不?
- 22. Java为什么char = char^char与char^= char不同?
- 23. C中2个字节的字节缩短为2个字节?
- 24. C++:什么占用更多的内存,将单个字符存储为字符或字符串?
- 25. 为什么全局$ _SERVER数组占用13倍的内存?
- 26. 为什么bools在阵列中占用较少的内存?
- 27. 为什么Networkx会占用我所有的内存?
- 28. SOLR占用内存过多(部分2)
- 29. 为什么sizeof()返回4个字节而不是2个字节的short int?
- 30. 小内存占用的语言选择
简短的回答是因为他们愚蠢:他们应该使用32位字符。 – tchrist 2011-04-08 12:25:15
不,他们不应该使用32位宽字符。这会让头顶更糟! – vy32 2011-07-04 04:13:58
@ vy32:是的。他们应该使用[6位宽字符](https://en.wikipedia.org/wiki/Six-bit_character_code)。这将节省空间,毕竟大写字母应该足够每个人。 – 2012-07-15 03:41:37