char类型变量占几个字节的内存存储 [Java]

char类型变量占几个字节的内存存储 [Java]java中的char类型变量占用几个字节的内存进行存储在内码中:通过UTF-16编码进行存储字符,而UTF-16中使用2个或者4个字节来表示一个字符,这个时候如果是2个字节可以存储的字符我们就使用一个char表示,如果是需要4个字节表示的字符,在UTF-16编码中我们通过两个char类型变量来表示所以在内码中,char类型变量使用两个字节进行存储,只不过有一些特殊的字符要使用两个char来表示在外码中:使用UTF-8来存储字符,占用1-4个字节(现在是1-6个字节)存储那么什么是内码?什么是

java中的char类型变量占用几个字节的内存进行存储

在内码中: 通过UTF-16编码进行存储字符,而UTF-16中使用2个或者4个字节来表示一个字符,这个时候如果是2个字节可以存储的字符我们就使用一个char表示,如果是需要4个字节表示的字符,在UTF-16编码中我们通过两个char类型变量来表示

  • 所以在内码中,char类型变量使用两个字节进行存储,只不过有一些特殊的字符要使用两个char来表示

在外码中: 使用UTF-8来存储字符,占用1-4个字节(现在是1-6个字节)存储

那么什么是内码?什么是外码?

内码(Internal Encoding):

某种语言运行时,其char和String类型的变量在内存中的编码方式

外码(External Encoding):

除了内码就是外码

  • 源文件和class文件中的编码方式都是属于外码

总结:

  1. java中内码(运行时内存)中的char类型变量使用UTF-16的方式进行编码,一个char占用两个字符,但是某些特殊的字符需要两个char来表示

    • 也就是在内码中char都是占用两个字节进行存储的,但是一个字符占用两个字节(一个char)或者四个字节(两个char)进行存储
  2. java中外码中char类型变量使用UTF-16的方式进行编码,一个字符占用1-4个字节(现在是1-6个字节进行存储)

  3. UTF-16编码中: 英文字符占用两个字节进行存储,绝大多数汉字使用两个字节进行存储,个别汉字(一般都是使用不到的生僻字)使用四个字节进行存储

  4. UTF-8编码中: 英文字符占用一个字节进行存储,绝大多数汉字使用三个字节进行存储,个别汉字使用四个字节进行存储

问题遗留:UTF-16中的个别生僻汉字使用四个字节来表示,这个时候为什么是两个char来表示的?一个汉字不应该是对应了一个char类型的变量?

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/27332.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注