Java语言中一个字符占几个字节

2个字节。java中一个char型的数据(也就是一个字符)占两个字节。而Java中常用的字符包括数字、英文字母、英文符号、中文汉字、中文符号等,若在字符串中包含里面的多种字符,这时候它们就不是都占两个字符。

Java语言中一个字符占几个字节-Worktile社区

java中一个char型的数据(也就是一个字符)占两个字节。而Java中常用的字符包括数字、英文字母、英文符号、中文汉字、中文符号等,若在字符串中包含里面的多种字符,它们是否都占两个字符呢?答案是否定的。

主要区分清楚内码(internal encoding)和外码(external encoding)就好了。内码是程序内部使用的字符编码,特别是某种语言实现其char或String类型在内存里用的内部编码;外码是程序与外部交互时外部使用的字符编码。“外部”相对“内部”而言;不是char或String在内存里用的内部编码的地方都可以认为是“外部”。例如,外部可以是序列化之后的char或String,或者外部的文件、命令行参数之类的。

Java语言规范规定,Java的char类型是UTF-16的code unit,也就是一定是16位(2字节);

char, whose values are 16-bit unsigned integers representing UTF-16 code units (§3.1).

然后字符串是UTF-16 code unit的序列:

The Java programming language represents text in sequences of 16-bit code units, using the UTF-16 encoding.这样,Java规定了字符的内码要用UTF-16编码。或者至少要让用户无法感知到String内部采用了非UTF-16的编码。

“感知”可以是多方面的,例如随机访问某个下标的code unit(String.charAt())应该是O(1)操作,这只有使用UTF-16或者别的“定长”编码才可以做到。注意我这里说的“定长”特指code unit定长,而不是说code point定长。

String.getBytes()是一个用于将String的内码转换为指定的外码的方法。无参数版使用平台的默认编码作为外码,有参数版使用参数指定的编码作为外码;将String的内容用外码编码好,结果放在一个新byte[]返回。

举一例:Java标准库实现的对char与String的序列化规定使用UTF-8作为外码。Java的Class文件中的字符串常量与符号名字也都规定用UTF-8编码。这大概是当时设计者为了平衡运行时的时间效率(采用定长编码的UTF-16)与外部存储的空间效率(采用变长的UTF-8编码)而做的取舍。

延伸阅读:

什么是字节?

字节(Byte)是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。

一个字节存储8位无符号数,储存的数值范围为0-255。如同字元一样,字节型态的变数只需要用一个位元组(8位元)的内存空间储存。

字节是二进制数据的单位。一个字节通常8位长。但是,一些老型号计算机结构使用不同的长度。为了避免混乱,在大多数国际文献中,使用词代替byte。在多数的计算机系统中,一个字节是一个8位长的数据单位,大多数的计算机用一个字节表示一个字符、数字或其他字符。一个字节也可以表示一系列二进制位。在一些计算机系统中,4 个字节代表一个字,这是计算机在执行指令时能够有效处理数据的单位。一些语言描述需要2个字节表示一个字符,这叫做双字节字符集。一些处理器能够处理双字节或单字节指令。字节通常简写为“B”,而位通常简写为小写“b”,计算机存储器的大小通常用字节来表示。

字节(Byte)是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。Byte是从0-255的无符号类型,所以不能表示负数。

文章标题:Java语言中一个字符占几个字节,发布者:小编,转载请注明出处:https://worktile.com/kb/p/36212

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年1月30日 下午11:38
下一篇 2023年1月31日 上午12:46

相关推荐

  • 公寓管理系统软件功能都有哪些

    公寓管理系统软件功能有:1、租客、主人方面;2、公寓物业方面;3、远程抄表功能;4、物业费收取功能。需要分为2个模块,一个模块是租客端,一个模块是业主端。租客可以根据系统进行在线签订合同,房租支付、预约看房、保洁维修等服务。 一、租客、主人方面 需要分为2个模块,一个模块是租客端,一个模块是业主端。…

    2023年4月30日
    5800
  • pycharm专业版和社区版区别是什么

    pycharm专业版和社区版区别在于以下几个方面:1、功能上的区别;2、授权方式不同;3、适用人群不同。功能上的区别是指,PYcharm专业版是功能最丰富的,与社区版相比,PYcharm专业版增加了Web开发、Python We框架、Python分析器、远程开发、支持数据库与SQL等更多高级功能。 …

    2023年3月18日
    6.7K00
  • okr怎么定

    定okr的步骤:1、设定目标;2、制定关键结果;3、确定权重和优先级;4、跟踪进展。首先,我们需要设定目标。目标应该是具体、可衡量的,并且与组织的愿景和战略相一致。最好的目标是有挑战性的,但也是现实可行的。 1、设定目标 首先,我们需要设定目标。目标应该是具体、可衡量的,并且与组织的愿景和战略相一致…

    2023年2月27日
    7700
  • wed的文件漏洞有哪些

    wed的文件漏洞有:1、SQL注入;2、文件上传漏洞;3、目录遍历;4、XSS(跨站脚本攻击);5、本地文件包含;6、全局变量覆盖。SQL注入就是通过把 SQL 命令插入到 Web 表单,递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的 SQL 命令的目的。 1、SQL注入 SQL…

    2023年1月11日
    8900
  • 科研项目管理的目标有哪些

    科研项目管理的目标有:一、确保项目按时交付;二、确保项目符合规定;三、确保项目高质量;四、确保项目在预算范围内完成;五、确保团队协作;六、确保规避潜在风险;七、确保项目交付价值。在研发项目中,时间是非常重要的因素。 一、确保项目按时交付 在研发项目中,时间是非常重要的因素。项目经理需要根据项目的复杂…

    2023年4月30日
    9100
  • 测试用例怎么设计

    设计测试用例步骤:1. 确定测试目标;2. 确定测试类型;3. 确定测试覆盖范围;4. 确定测试条件;5. 设计测试用例;6. 执行测试用例;7. 评估测试结果。在设计测试用例之前,需要明确测试目标。测试目标一般是根据软件需求或者用户需求来确定的。 1. 确定测试目标 在设计测试用例之前,需要明确测…

    2023年2月26日
    4500
  • 云服务器和普通服务器的区别是什么

    云服务器和普通服务器的区别在于以下几个方面:1、定义的区别;2、成本的区别;3、使用效率的区别;4、故障率的区别;5、稳定性的区别等。定义的区别主要在于,云服务器是一个提供计算服务的服务器集群;而服务器是一个提供计算服务的硬件设备。 一、定义的区别 云服务器是一种简单高效、安全可靠、处理能力可弹性伸…

    2023年2月21日
    11100
  • 关于深度学习中目标跟踪算法和目标检测算法的关键区别是什么

    关于深度学习中目标跟踪算法和目标检测算法的关键区别是:1、任务定义;2、数据输入;3、输出结果;4、算法实现。目标跟踪算法的主要任务是在视频序列中实时跟踪一个预定义的目标。目标检测算法的任务是在图像或视频中检测出多个不同类别的目标,并标记出它们的位置。 一、任务定义 目标跟踪算法的主要任务是在视频序…

    2023年7月30日
    7100
  • 文件管理软件有什么用

    文件管理软件的作用有:一、文件存储和查找;二、文件备份和恢复;三、文件加密和解密;四、文件编辑和转换。文件管理软件可以帮助用户将文件存储到指定的目录中,并根据文件的类型、名称、大小等多个维度对其进行分类和排序。 一、文件存储和查找 文件管理软件可以帮助用户将文件存储到指定的目录中,并根据文件的类型、…

    2023年4月27日
    9900
  • logo的设计理念

    logo的设计理念:1、简单性;2、原创性;3、多功能性;4、可扩展性;5、平衡感;6、永恒性。简单是指,简单性有助于logo经受住时间的挑战,并使其可复制且易于使用,字体、颜色选项和图形的明智选择对于这一步至关重要。 1、简单性 简单性有助于logo经受住时间的挑战,并使其可复制且易于使用。您希望…

    2023年3月21日
    27500

发表回复

登录后才能评论
联系我们
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部