Char类型的长度问题

char类型原本用于表示一个字符。不过随着字符种类的扩充,如今一些Unicode字符则需要两个char值。

char类型的字面量值需要用单引号括起来,而非是双引号。'A'是编码值为65所对应的字符常量。"A"是指包含一个字符的字符串。char 类型的值可以表示为十六进制值,其范围从 \u0000 到 \uffff 。

\u是一种转义序列。另外,下图是特殊字符的转义序列。

 Java设计采用16 位的 Unicode 字符集,这样会比使用 8 位字符集的程序设计语言有很大的改进。如今,Unicode 字符超过了 65 536 个,其主要原因是增加了大量的汉语、 日语和韩语中的表意文字。现在, 16 位的 char 类型已经不能满足描述所有 Unicode 字符的需要了。

Unicode 的码点可以分成 17 个代码级别 (code plane)。第一个代码级别称为基本的多语言级别 (basic multilingual plane ), 码点从 U+0000 到 U+FFFF, 其中包括经典的 Unicode 代码;其余的 16个级别码点从 U+10000 到 U+10FFFF , 其中包括一些辅助字符(supplementary character)。

UTF-16 编码采用不同长度的编码表示所有 Unicode 码点。除辅助字符外,其他字符使用一个代码单元表示也就是16位。辅助字符则需要一对代码单元。通过巧妙的设计,可以根据第一个代码单元区分出是单个字符,还是辅助字符的第一个代码单元。例如,⑪是八元数集的一个数学符号,码点为 U+1D546, 编码为两个代码单兀 U+D835 和U+DD46。

所以来说采用UTF-16编码的char类型需要2字节或4字节的存储空间。
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值