[关闭]
@wxf 2019-07-25T17:53:52.000000Z 字数 872 阅读 807

8.char的真正含义

老马说编程


char —— Java中进行字符处理的基础。char用于表示一个字符,这个字符可以是中文字符,也可以是英文字符。赋值时把常量字符用单引号括起来,如:
char c = 'H'
char z = '中'
前面的章节中提到字符类型可以进行算术运算和比较,那么char的本质是什么呢?

char的本质

在Java内部进行字符处理时,采用的都是Unicode,UTF-16BE。UTF-16使用两个或四个字节表示一个字符,Unicode编号范围在65536以内的占两个字节,超出范围的占四个字节。
所以char本质上是一个固定占用两个字节的无符号正整数(char是正整数),这个正整数与Unicode编号一一对应,用于表示那个Unicode编号对应的字符。此外,需要使用两个char来表示Unicode编号在65536以外的字符。

char的赋值

char的运算

由于char本质上是一个整数,所以可以进行整数运算。在进行运算时会被当做int,所以运算结果不能直接赋值给char类型,需要强制类型转换,这和byte,short参与整数运算时类似的。char类型的比较就是其Unicode编号的比较。
char的加减运算就是按其Unicode编号进行运算,一般对字符做加减运算没什么意义,但Ascii码字符是有意义的。比如大小写转换,大写A-Z的编号是65-90,小写a-z的编号是97-122,正好相差32,所以大写转小写只需加32,而小写转大写只需减32。加减运算的另一个应用是加密和解密,将字符进行某种可逆的数学运算可以做加解密。


参考资料:

老马说编程(微信号:laoma_shuo)—— char的真正含义

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注