Java基本数据类型——字符类型

        学过Java的同学都知道char是Java中的八大基本数据类型之一,表示单个字符,用单引号括起来。那么char是怎么表示一个字符的?带着这个疑问,我翻开《Java核心技术·卷一》重新看了一遍对char类型的讲解,发现不深刻了解字符集、字符编码,对char类型的理解只能浮于表面,基于char类型的String也不能深刻理解。

一、字符集(Character Set)

        字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。

        因为计算机只能存储二进制数字,所以在计算机中要表示字符,必须将字符转换成数字。字符集就是将字符转换成数字的解决方案。将多个字符放入一个集合中,给每个字符设定一个固定编号,使字符和编号一一对应,这样给计算机一个编号,它就知道是哪个字符。

        字符集有美国的ASCII、西欧的ISO 8859-1、俄罗斯的KOI-8、中国的GB 2312等,给定一个字符编号,在不同的字符集中可能代表不同的字符,这就是乱码出现的原因。所以出现了目前通用的的Unicode,它纳入了世界上几乎所有的字符,给每个字符赋予了独一无二的编号。

二、字符码(Code Point)

        字符码也叫码点,代表字符集中每一个字符对应的数字编号。每个码点对应一个真正的字符。

三、字符编码(Character Encoding)

        字符编码是将码点存储为计算机中二进制数字的实现方案。比如,ASCII总共包含128个字符,用7位(bit)存储刚好,但是计算机一般将字节(Byte)作为基本单元,所以用8位表示一个字符,最高位置0,码点从0到127。

四、UTF

        Unicode纳入了上百万个字符,但它只是一个巨大的字符集,仅仅规定了每个字符的编号,但没有指定具体的存储规则。所以产生了UTF(Unicode Transformation Format)编码格式,包括UTF-8、UTF-16、UTF-32,后面的数字表示至少使用多少位(bit)表示一个字符。

        UTF-8:变长编码格式,用1~6个字节存储单个字符;

        UTF-32:固定长度的编码格式,用4个字节存储单个字符;

        UTF-16:使用2个或者4个字节存储单个字符。

五、Java中的char类型

        UTF-16用2个字节 or 4个字节表示一个码点,2个字节(16位)通常被称为一个代码单元,也就是UTF-16编码格式中,一个字符用1个代码单元或者2个代码单元表示。

        Java中,char类型描述了UTF-16编码格式中的一个代码单元

        所以,单个字符在Java中,用1个char或者2个char表示,对于码点在U+0000~U+FFFF范围内的,用1个char表示,码点在U+10000~U+10FFFF范围内的,用2个char才能表示。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值