char的本质
Java中处理字符的基础就是char,上层的Character, String, StringBuffer, StringBuilder等都是在char的基础上进行的操作。
char表示一个字符,可以是中文,也可以是英文。
char的本质是一个固定占用两个字节的无符号整数,这个正整数对应于Unicode的编号,用于表示那个Unicode编号表示的字符。具体编码格式是UTF-16BE。使用俩个或四个字节表示一个字符。Unicode编码在66536内的用两个字节,超出的四个字节。
char的运算
由于char本质上是一个整数,所以可以进行整数可以进行的一些运算,在进行运算时会被看做int,但由于char占两个字节,运算结果不能直接赋值给char类型,需要进行强制类型转换,这和byte, short参与整数运算是类似的。
char类型的比较就是其Unicode编号的比较。
char 的加减运算就是按其Unicode编号进行运算,一般对字符做加减运算没什么意义,但Ascii码字符是有意义的。比如大小写转换,大写A-Z的编号是 65-90,小写a-z的编号是97-122,正好相差32,所以大写转小写只需加32,而小写转大写只需减32。加减运算的另一个应用是加密和解密,将 字符进行某种可逆的数学运算可以做加解密。
char的位运算可以看做就是对应整数的位运算,只是它是无符号数,也就是说,有符号右移>>和无符号右移>>>的结果是一样的。
char的二进制
char本质上是整数,所以可以用Integer的查看二进制方式
char c = '打';
System.out.println(Integer.toBinaryString(c));