前面两个小节讨论了用于存储数值的数据类型。另外还经常会遇到需要存储并操纵字符型数据的情况。例如:计算数值表达式时,需要存储运算符,这时需要一种可以存储单个字符数据的数据类型。Java语言提供了一种char数据类型,可以满足存储单个字符的需要。
Java语言中,char占2个字节的存储空间,即可以存储英文字符,也可以存储单个汉字,一个汉字编码也占2个字节的存储空间。
char变量可按如下方式声明:
char code='a';
任意单个字符,加单引号。
char code ='中';
任意单个中文字,加单引号。
char code =111;
整数。0~65535。十进制、八进制、十六进制均可。输出字符编码表中对应的字符。
示例1:字符赋值并输出到命令行窗口
在D盘Java目录下,新建“CharSample.java”文件。用记事本打开“CharSample.java”文件,输入以下代码:
编译“CharSample.java”文件,在命令行窗口输入“javac CharSample.java”并执行命令,编译通过后,在命令行窗口输入“java CharSample”运行Java程序,命令行窗口显示如下信息:
图 4-8 char类型示例1输出结果
从上图可以看出,程序输出了字符A。
示例2:整数赋值并输出到命令行窗口
用记事本打开D盘Java目录下“CharSample.java”文件,修改代码如下:
编译“CharSample.java”文件,在命令行窗口输入“javac CharSample.java”并执行命令,编译通过后,在命令行窗口输入“java CharSample”运行Java程序,命令行窗口显示如下信息:
图 4-9 char类型示例2输出结果
从输出结果可以看出,char类型的变量ch被赋值为65,命令行窗口输出的仍然是字符A。这是因为字符A在ASCII码表中的十进制数值是65,把数值65赋值给char类型的变量ch,相当于把字符A赋值给ch。
示例3:中文字符赋值并输出到命令行窗口
用记事本打开D盘Java目录下“CharSample.java”文件,修改代码如下:
编译“CharSample.java”文件,在命令行窗口输入“javac CharSample.java”并执行命令,编译通过后,在命令行窗口输入“java CharSample”运行Java程序,命令行窗口显示如下信息:
图 4-10 char类型示例3输出结果
从输出结果可以看出,命令行窗口按预期输出了中文字符。
示例4:中文字符编码赋值并输出到命令行窗口
中文字符“中”在GBK2312编码为十六进制0X4e2d,将编码赋值给字符型变量。用记事本打开D盘Java目录下“CharSample.java”文件,修改代码如下:
编译“CharSample.java”文件,在命令行窗口输入“javac CharSample.java”并执行命令,编译通过后,在命令行窗口输入“java CharSample”运行Java程序,命令行窗口显示如下信息:
图 4-11 char类型示例4输出结果
从输出结果可以看出,把中文字符“中”的UTF-8编码数值赋值给char型变量ch,命令行窗口仍然输出中文字符“中”。
示例5:多个中文字符编码赋值并输出到命令行窗口
可以尝试把多个中文字符赋值给char型变量,查看输出结果。用记事本打开D盘Java目录下“CharSample.java”文件,修改代码如下:
编译“CharSample.java”文件,在命令行窗口输入“javac CharSample.java”并执行命令,编译通过后,在命令行窗口输入“java CharSample”运行Java程序,命令行窗口显示如下信息:
图 4-12 char类型示例5输出结果
编译器给出了“未结束的字符文字”错误信息,从给出的错误信息可以验证,字符型变量只能接受单个英文或中文字符,对char型变量不能进行多个字符的赋值。
char型变量只能存储单个英文和中文字符,即可以把字符直接赋值给char型变量,也可以直接把字符所在字符集的编码赋值给char型变量,Java输出char型变量时,输出到显示设备(如电脑屏幕)的是字符本身。
(1)下面的那个赋值语句是正确的()
A.char ch = 0X80;
B.char ch =a;
C.char ch=ab
D.char ch=’ab’
(2)下面的程序代码,输出的正确结果是()
A.D
B.97
C.A
D.a
(3)在Java语言中,char型变量占多少字节()
A.4
B.2
C.1
D.8