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

相关推荐

  • 学编程PLC要买什么电脑

    学习PLC编程不必购置高性能电脑,主要关注三个方面: 1、处理器性能、2、稳定的内存容量、以及3、足够的硬盘存储。在处理器性能方面,多数PLC编程软件对CPU的要求不高,但考虑未来学习的可能性扩展和软件的更新,选择具有较好性能的处理器能保证软件运行的流畅度和未来的兼容性,例如,中高端的i5或i7处理…

    2024年5月16日
    11800
  • 用什么编程公式炒股好

    实现股市自动化交易的成功率较高的几种编程公式分别是移动平均线交叉、相对强弱指数(RSI)、MACD交叉和量价分析。在这些方法中,移动平均线交叉是一种常用的技术分析工具,它基于两条不同周期的移动平均线之间的关系来决定买卖时机。当短期平均线从下方穿越长期平均线时,通常被解释为买入信号,反之则为卖出信号。…

    2024年5月16日
    5700
  • 新手编程序用什么软件

    新手编程推荐使用的软件有1、Visual Studio Code、 2、Sublime Text、 3、Atom。 对于初学者来说,Visual Studio Code(VS Code)是一个十分理想的选择。它是由微软开发的一款免费、开源的编辑器,支持多种编程语言,并且具有强大的社区支持。VS Co…

    2024年5月16日
    8200
  • 编码编程是什么意思

    编码编程是1、使用编程语言将指令转换成机器可以执行的代码、2、软件开发过程中的一个重要环节。在这个过程中,最显著的特点是将解决问题的策略和逻辑用具体的编程语言形式表达出来。这就需要开发者不仅要掌握一门或多门编程语言,还需要具备逻辑思维和解决问题的能力。通过编码,开发者能够让计算机执行特定任务,从而达…

    2024年5月16日
    2700
  • 网上教编程的是什么

    网上教授编程主要是通过数字平台向用户提供编程知识与技能的学习资源和指导。在这种方式中,互动式教学特别受到重视,因为它能够模拟真实的编程环境,让学习者在实践中掌握知识。这种教学方法不仅包括视频课程、在线讲座和实时代码编写实践,还可能涵盖编程挑战和项目构建等元素,用以增强学习者的实战能力。 I、互动平台…

    2024年5月16日
    3300

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

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

分享本页
返回顶部