Java-基本数据类型-char字符
# 字符类型:char
char
型数据用来表示通常意义上的“字符”- 一个字符占用2个字节
- java中所有的字符都使用Unicode编码,故一个字符可以存储一个字母,或一个汉字,或其他书面语的一个字符。
# 表现形式
字符型的变量有三种表现形式:
- 字符常量是用单引号('')括起来的单个字符。
例如:char c1 = 'a';
, char c2 = '中';
, char c3 = '9';
- Java中还允许使用转义符
'\'
来将气候的字符转变位特殊字符型常量。
例如:char c3 = '\n';
//'\n'
表示换行符,'\t'
表示制表符。
- 直接使用
Unicode值
来表示字符型常量。
例如: '\uXXXX'
。其中,XXXX代表一个十六进制整数。如:\u000a
表示\n
。
- char类型是可以进行运算的。因为它都对应有
Unicode码
。
# 实例
char c1 = 'a';
System.out.println(c1);
char c2 = 'A';
System.out.println(c2);
// 错误示例
char c3 = 'AB';
char c4 = '\n';//换行符
System.out.print("hello" + c4);
System.out.println("world");
//hello
//world
char c5 = '\t';//制表符
System.out.print("hello" + c5);
System.out.println("world");
//hello world
char c6 = '\u0043';
System.out.println(c6); // C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# ASCII 码
- 在计算机内部,所有数据都使用二进制表示。每一个二进制位(
bit
)有0
和1
两种状态,因此8个二进制位就可以组合出256种状态,这被称为一个字节(byte
)。一个字节一共可以用来表示236种不同的状态,每一个状态对应一个符号,就是256个符号,从00000000到11111111. - ASCII码:上个世界60年代,美国制定了一套字符编码,对英语字符与二进制之间的关系,做了统一规定。这被称为ASCII码。ASCII码一共规定了128个字符的i编码,比如空格"
SPACE
"是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的1位统一规定为0。 - 特点:
- 不能表示所有字符。
- 现同的编码表示的字符不一样:比如,130在法语编码种代表了
é
,在希伯来语编码中代表了字母Gimel
(ג
)
# Unicdoe编码
- 乱码:世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。因此,要想打开一个文本文件,就必须知道它的编码方式,否则用错误的编码方式解读,就会出现乱码。
- Unicode:一种编码,将世界上所有的符号都纳入其中。每一个符号都给予一个独一无二的编码,使用Unicode没有乱码的问题。
- Unicode的缺点:Unicode只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储;无法区别Unicode和ASCII;计算机无法区分三个字节表示一个符号还是分别表示三个符号。另外,我们知道,英文字母只用了一个字节表示就足够了,如果unicode统一规定,每个符号用三个或四个字节来表示,那么每个英文字母前都必然有二到三个字节是0,这对于存储空间来说是极大的浪费。
# UTF-8
- UTF-8是在互联网上使用最广的一种Unicode的实现方式。
- UTF-8是一种编程的编码方式。它可以使用1-6个字节表示一个符号,根据不同的符号而变化字节长度。
- UTF-8的编码规则:
- 对于单字节的UTF-8编码,该字节的最高位为0,其余7位用来对字符进行编码(等沟通与ASCII码)。
- 对于多字节的UTF-8编码,如果编码包含n个字符,那么第一个字节的前n位位为1,第一个字节的n+1位位0,该字节的剩余各位用来对字符进行编码。在第一个字节之后的所有的字节,都是最高两位位"10",其余6位用来对字符进行编码。
帮我改善此页面 (opens new window)
上次更新: 2020/12/18, 12:50:58