### 字符类型

#### 1．char 型

字符类型（char）用于存储单个字符，占用 16 位（两个字节）的内存空间。在定义字符型变量时，要以单引号表示，例如 's' 表示一个字符。而 "s" 则表示一个字符串，虽然它只有一个字符，但由于使用双引号，所以它仍然表示字符串，而不是字符。

使用 char 关键字可定义字符变量。

例 声明字符型变量，实例代码如下：

char x ='a';

由于字符 a 在 unicode 表中的排序位置是 97。因此，允许将上面的语句写成：

char x = 97;

同 C、C++语言一样，Java 语言也可以把字符作为整数对待。由于 unicode 编码采用无符号编码，可以存储 65536 个字符（0x0000）～0xffff)，所以 Java 中的字符几乎可以处理所有国家的语言文字。若想得到一个 0～65536 之间的数所代表的 unicode 表中的相应位置上的字符，也必须使用 char 型显示转化。

例 在项目中创建类 Gess，编写如下代码，实现将 unicode 表上某些位置上的字符以及一些字符在 unicode 表中的位置在控制台上输出。

public class Gess { //定义类 Examlpe

public static void main(String[] args) { //主方法

char word = 'd', word2 = '@'; //定义 char 型变量

int p = 23045, p2 = 45213; //定义 int 型变量

System.out.println("d 在 unicode 表中的顺序位置是：" + (int) word);

System.out.println("@在 unicode 表中的顺序位置是：" + (int) word2);

System.out.println("unicode 表中的第 23045 位是：" + (char) p);

System.out.println("unicode 表中的第 45213 位是：" + (char) p2);

}

}

运行结果如图 1 所示。

图 1 实例的运行结果

#### 2．转义字符

转义字符是一种特殊的字符变量。转义字符以反斜线“\”开头，后跟一个或多个字符。转义字符具有特定的含义，不同于字符原有的意义，故称“转义”。例如，printf 函数的格式串中用到的“\n”就是一个转义字符，意思是“回车换行”。Java 中转义字符如表 1 所示。

表 1 转义字符表

转义字符 | 含义
\ddd | 1 到 3 位 8 进制数据所表示的字符，如：\456
\dxxxx | 4 位 16 进制所表示的字符,如：\0052
\’ | 单引号字符
\\ | 反斜杠字符
\t | 垂直制表符，将光标移到下一个制表符的位置
\r | 回车
\n | 换行
\b | 退格
\f | 换页

将转义字符赋值给字符变量时，与字符常量值一样需要使用单引号将转义字符括起来。

例，分别为字符变量 c1 赋值为'\\'、字符变量 c2 赋值为'\''、字符变量 c3 赋值为'\115'、字符变量 c4 赋值为'\u0052'，字符变量 c5 赋值为'\u2605'，然后输出。

char c1='\\'; //为变量 c1 赋值转义字符“\\”

char c2='\''; //为变量 c2 赋值转义字符“\'”

char c3='\115'; //为变量 c3 赋值转义字符“\115”表示的字符

char c4='\u0052'; //为变量 c4 赋值转义字符“\u0052”表示的字符

char c5='\u2605'; //为变量 c5 赋值转义字符“\u2605”表示的字符

System.out.println(c1); //输出结果为：\

System.out.println(c2); //输出结果为：'

System.out.println(c3); //输出结果为：M

System.out.println(c4); //输出结果为：R

System.out.println(c5); //输出结果为：★

说明：unicode代码\u0052表示字符R，而unicode代码\u2605表示字符★。

上面的代码，在控制台输出的结果如图 2 所示。

图 2 控制台输出结果

例 在 Java 中，对字符变量进行如下的赋值也是合法的：

char char1='B'+1; //将字符常量值'B'与十进制整数 1 相加的结果赋给字符变量 char1

char char2='B'+'1'; //将两个字符常量值'B'与'1'相加的结果赋给字符变量 char2

char char3=24+76; //将两个十进制整数 24 与 76 相加的结果赋给字符变量 char3

char char4='n'-32; //该操作将得到大写的字母 N，'N'+32 将得到小写的字母 n

System.out.println(char1); //输出结果为：C

System.out.println(char2); //输出结果为：s

System.out.println(char3); //输出结果为：d

System.out.println(char4); //输出结果为：N

上面的代码，在控制台输出的结果如图 3 所示。

图 3 控制台输出结果

例 在输出语句中使用转义字符，实例代码如下：

public class Temp {

public static void main(String[] args) {

System.out.println("\102"); // 八进制编码的字符

System.out.println("\u0042"); // 十六进制编码的字符

System.out.println("苹果\t 橘子\t 香蕉"); // 使用制表符分割

System.out.println("\\字符是反斜杠"); // 输出反斜杠

System.out.println("\n 换行字符"); // 输出回车

}

}

实例运行结果如图 4 所示。

图 4 实例运行结果