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

谢谢

简短的答案是因为它们无聊:他们应该使用32位字符。

不,他们不应该使用32位宽的字符。 这将使开销更大!

@ vy32:是的。 他们确实应该使用6位宽的字符。 这样可以节省空间,而且毕竟大写字母对于每个人都足够。

如果要节省空间,每个字符5位就足够了。 实际上,剩余的4个排列也可以使用-节省更多空间。

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

我肯定Joel会喜欢"每个程序员都应该了解的字符编码插件":joelonsoftware.com/articles/Unicode.html

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

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

在以前的语言中,使用了C ASCII表示法。

范围是127,代表127个唯一符号和语言字符。

JAVA带有一个称为" INTERNATIONALIZATION"的功能,即所有人类可读字符(包括区域符号)也已添加到其中,并且范围也得到了扩大,因此需要更多的存储空间,因此将所有这些符号统一的系统为"标准Unicode系统"等

该统一要求在JAVA中需要额外的字节。

第一个字节保持原样,ASCII字符的范围在C,C ++中为127,但是将统一字符附加到它们之后。

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

Java的?教程:

The char data type is a single 16-bit Unicode character. It has a minimum value of '\\u0000' (or 0) and a maximum value of '\\uffff' (or 65,535 inclusive).

Java被用作国际化语言,因此它以不同的语言工作,并且需要占用一个以上的字节,这就是为什么它在char中占用2byte的空间。

因为例如中文不能处理一个字节的字符。

我们知道c支持ASCII,其中java支持Unicode,其中包含3件事:

1-ASCII

2个扩展的ASCII

3种本地语言字符

ASCII是unicode的子集.ASCII仅支持英语,而Unicode支持跨国语言。否则,由于所有原因,java字符在UTF-16内编码,使用2字节。由于Unicode是ASCII的扩展版本,所以它使用8位的16位。

Java char所占用的字节_关于unicode:为什么Java char原语占用2个字节的内存?相关推荐

  1. java基础案例教程第二章_第2章Java编程基础_补充案例教程.doc

    第2章Java编程基础_补充案例教程 博学谷--让IT教学更简单,让IT学习更有效博学谷--让IT教学更简单,让IT学习更有效 PAGE \* MERGEFORMAT34PAGE \* MERGEFO ...

  2. vc++64位系统下long的长度为4个字节_新来的妹子把几百万数据放入了内存,系统立马爆了...

    点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 上一篇:这300G的Java资料是我师傅当年给我的,免费分享给大家 下一篇:这200G的Java实战资料是我师傅当年教 ...

  3. java开发环境及数据类型实验_实验项目1 Java开发环境与语言基础

    <实验项目1 Java开发环境与语言基础>由会员分享,可在线阅读,更多相关<实验项目1 Java开发环境与语言基础(14页珍藏版)>请在人人文库网上搜索. 1.实验项目1 Ja ...

  4. java 指定垃g1圾收集_【译】Java 14 Hotspot 虚拟机垃圾回收调优指南

    本文主要包括以下内容:优化目标与策略(Ergonomics) 垃圾收集器实现(Garbage Collector Implementation) 影响垃圾收集性能的因素总堆(Total Heap) 年 ...

  5. java和.net能共存吗_是否能让JAVA 和 .NET框架共存(转)

    原创作者:Ashish Banerjee 翻译整理:51DOTNET CLUB(WWW.51DOTNET.COM)SLASH 目的:对JAVA与.NET框架共存的可能性做一个评估 目标受众:JAVA程 ...

  6. java工程如何跑起来的_你编写的Java代码是咋跑起来的?

    如果你是一名 Java 开发人员,你肯定指定 Java 代码有很多种不同的运行方式.比如说可以在开发工具(IDEA.Eclipse等)中运行,可以双击执行 jar 文件运行,也可以在命令行中运行,甚至 ...

  7. ios java aes_PHP7 AES加密解密函数_兼容ios/andriod/java对等加解密

    **PHP7.0 7.1 7.2 7.3 AES对等加解密类 函数文件_兼容ios/andriod/java等** 由于新项目规划要求使用PHP7.2开发环境,但在部分新系统中仍需使用AES加解密方式 ...

  8. java电商秒杀深度优化_【B0796】Java性能优化亿级流量秒杀方案及电商项目秒杀实操2020视频教程...

    Java视频教程名称:Java性能优化亿级流量秒杀方案及电商项目秒杀实操2020视频教程    java自学网[javazx.com]  性能视频教程   it教程 Java自学网收集整理 java论 ...

  9. java实验报告金陵科技学院_金陵科技学院java

    <Java语言程序设计>学生信息管理_理学_高等教育_教育专区.学生信息管理系统,金陵科技学院 <Java 语言程序设计>课程考查报告 题 目: 学生信息管理程序 学生姓名.. ...

最新文章

  1. 导入第三方工程报错的处理方法
  2. dpkg: 处理软件包 xxx (--configure)时出错解决方法
  3. VS中怎样打开MSDN帮助文档
  4. 关于Matconvnet中模型发布与共享的思考
  5. 我们还很时尚freeeim
  6. 设置防火墙规则,防止因为TCP第三次握手,系统自动返回包
  7. java使用poi操作excel文件_使用 java apache poi 操作 excel xlsx 文件
  8. GreyBox和ThickBox
  9. 【开发工具】之linux下makefile编写
  10. 创 Lockdir 文件夹加密 破解
  11. 三国杀全武将台词大全(标准+神话再临+一将成名12345+SP+国战+其他+皮肤)
  12. 软件项目管理EAC、ETC的计算
  13. 【Python】全局变量(含义、使用要求、代码调试步骤)
  14. [附源码]Python计算机毕业设计超市商品管理系统
  15. 同一设备安装不同版本的Vue脚手架
  16. 7-2 531 字符串_小写变大写
  17. 使用vscode remote ssh功能远程连接服务器或树莓派时,报错Setting up SSH tunnel的终极解决办法,全网仅此一份
  18. 关于for循环的一些题目(二)
  19. Dev --gridView中CheckItem的多选设置
  20. 2017/11/6~2017/11/12学习Java总结

热门文章

  1. python读取只读word只读_Python用于NLP :处理文本和PDF文件
  2. excel 两组数据交点_Python 自动化测试(四):数据驱动
  3. 【Linux环境下安装Maven与环境配置简易教程】
  4. springboot集成spring security实现登录和注销
  5. 大学阶段总结——大一
  6. Minimum Possible LCM
  7. 计算机二级基础知识 文库,计算机二级公共基础知识(全)
  8. java源码导入eclipse_spring5源码如何导入eclipse
  9. 开源Delphi:AutoCHM:CHM生成和还原Html工具
  10. php文件目录操作相关