Java字符的数据类型
它是计算机的数据存储单元,每个字节包括8个二进制“位-bit”,可以保存8位的二进制数。
由于受到电子设备的物理特定限制,例如磁性存储器只适合保存两种状态的信息—磁性的强弱、以电信号的方式也只适合传递两种状态的信息—电压的高低,因此在计算机中最终结果时再将转换为人们熟悉的格式,如十进制数值、字符和图形等。 为了实现对字符信息的存储,人们将可能用到的字符排成一个有序的字符队列,这种由多个有序字符组成的集合称为“字符集-Charset”,而在计算机中世纪保存的是字符在字符集中的序号,即一个二进制形式的整数。而到底采用1个还是多个字节以及具体如何来存储一个字符集的字符,这种相关的规定被称为“编码-Encoding”。
Java最初采用的是16位Unicode编码(UTF-16)来表示字符,无论序号大小,每个Java字符都占用定长的2B(16个二进制位),因此最多能表示65536个不同的字符,这只是粗略的说法,实际上如果采用变通的方式进行字符编码,UTF-16编码可以表示的字符远多于65536个。
例如,从JDK5开始Java语言引入了Unicode编码规范中的代码点(Code Point)机制,将每个字符对应的代码称为一个代码点,基本的多语言字符的代码点还是用16位表示,这16位的二进制数据也称为一个单元代码(Code Unit),此时一个代码单元也对应一个代码点;
而后扩充辅助字符则编码为2个连续的代码单元(32位),此时一个代码点有两个代码单元组成,这实际上是将UTF-16也变成了可变长度编码。 (1) 用英文单引号括起来的单个字符,例如:'a'、'字'。这是最常见的声明字符形式。
(2) 用英文单引号括起来的十六进制字符代码值来表示单个字符。其格式为:'uXXXX',其中u是约定的前缀(u是unicode的第一个字母),而后面的XXXX位4位十六进制数,是该字符在unicode字符集中的序号。例如:'uFFFF'。 某些特殊的字符可以采用转义符来表示,如换行和制表符在源文件直接出现会被当做分隔符、而不是做字符常量来使用,因而分别使用'n'和't'来转移,下面给出一些常见的Java程序中用到的转义符:
n:换行符,unicode值为'u000a'
t:制表符,unicode值为'u0009'
r:回车符,unicode值为'u000d'
:双引号,unicode值为'u0022'
':单引号,unicode值为'u0027'
\:反斜杠,unicode值为'u005c'
b:退格符,unicode值为'u0008'
在Java中声明字符:char c1 = '一'; 即表示c1是一个字符。