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

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类型的变量?
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值