回答
在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