1. 基本介绍
字符类型可以表示单个字符,字符类型是char(两个字节,可以表示汉字)
例:
char c1 = 'a';
char c2 = '\t';
char c3 = '陈';
char c4 = 97;
输出结果:
2. 字符类型使用细节
- 字符常量是用单引号( ’ ’ )括起来的单个字符;
例如:
char c1 = 'a';
char c2 = '一';
char c3 = '5';
- Java中还允许使用转义字符 ‘\’ 来将其后的字符转变为特殊字符型常量;
例:
//定义变量
char c1= 'a';
char c2 = '\t';//'\t'表示制表符
char c3 = 'b';
//输出
System.out.print(c1);
System.out.print(c2);
System.out.print(c3);
结果:
-
在java中,char的本质是一个整数,在输出时,是unicode码对应的字符;
(可点击这里查询)
例:
其中,可以看出a的unicode码是97。
汉字也有对应的编码
例:
可以看出汉字‘蒋’的unicode码是33931。
例(java程序):
char c1 = 'a';
char c2 = 97;
char c3 = '蒋';
char c4 = 33931;
//输出
System.out.println("c1 = "+(int)c1);
System.out.println("c2 = "+c2);
System.out.println("c3 = "+(int)c3);
System.out.println("c4 = "+c4);
运行结果:
- 可以给char赋一个整数,然后输出时,是按unicode码输出对应的字符(如上);
- char类型可以进行运算,相当于一个整数,因为有对应的unicode码。
例:
System.out.println('a'+5);//输出102
运行结果:
3. 字符类型的本质
3.1 字符类型的本质讨论
- 字符型储存在计算机中,需要将字符对应的码值(整数)找出来,比如‘a’
存储:‘a’ --》 码值 --》 二进制 --》 储存
读取:二进制 --》97 --》 ‘a’ --》显示
这里可以看做计算机只能识别电信号,而电信号有正和负,相当于二进制的0和1,因此需要转换成二进制储存在计算机中。 - 字符和码值的对应关系是通过字符编码表决定的(是规定好的)
3.2 编码表的简单介绍
Ascll:Ascll编码表用一个字节来表示,一共128个字符,实际可以表示256个,只用了128个。
Unicode:Unicode编码表是固定大小的编码表,使用2个字节表示字符,字符和汉字统一占2个字节,但会造成空间浪费。
utf-8:是大小可变的的编码,字母使用1个字节,汉字使用2个字节。
gbk:可以表示汉字,而且范围广,字母使用1个字节,汉字使用2个字节。