--------------------------------------------------字符数据类型和操作--------------------------------------------
要点提示:字符数据类型用于表示单个字符。
除了处理数值之外,Java还可以处理字符。字符数据类型char用于表示单个字符。字符型字面值用单引号括住。考虑以下代码:
char letter='A';
char numChar='4';
第一条语句将字符A赋值给char型变量1etter。第二条语句将数字字符4赋值给char 型变量numChar。
警告:字符串字面值必须括在双引号中。而字符字面值是括在单引号中的单个字符。因
此"A"是一个字符串,而'A'是一个字符。
计算机内部使用二进制数。-个字符在计算机中是以0和1构成的序列的形式来存储的。将字符映射到它的二进制形式的过程称为编码(encoding)。字符有多种不同的编码方式,编码表(encoding scheme)定义该如何编码每个字符。
Java支持Unicode码,Unicode码是由Unicode协会建立的一种编码方案,它支持使用世界各种语言所书写的文本的交换、处理和显示。Unicode一开始被设计为16位的字符编码。基本数据类型char试图通过提供一种能够存放任意字符的简单数据类型来利用这个设计。但是,一个16位的编码所能产生的字符只有65536个,它是不足以表示全世界所有字符的。因此,Unicode标准被扩展为1 112 064个字符。这些字符都远远超过了原来16位的限制,它们称为补充字符 (supplementary character)。Java支持这些补充字符。对补充字符的处理和表示介绍超过了本书的范围。为了简化问题,本书只考虑原来的16位Unicode字符。这些字符都可以存储在一个char型变量中。
一个16位Unicode占两个字节,用以\u开头的4位十六进制数表示,范围从"\u0000' 到"\uFFFF'。关于十六进制数字的更多内容自行搜索查找。例如:welcome被翻译成中文需要两个字符“欢迎”。这两个字符的Unicode为\u6B22 。希腊字母,,的Unicode 是 \u03b1 \u03b2 \u03b3。
大多数计算机采用ASCII(美国标准信息交换码),它是表示所有大小写字母、数字、标点符号和控制字符的8位编码表。Unicode码包括ASCII码,从'u0000'到'Nu007F'对应128个ASCII字符。下表给出了一些常用字符的ASCII码。, 表常用字符的ASCH码以及它们的十进制和十六进制编码。
字符 | 十进制编码值 | Unicode值 |
'0'~'9' | 48~57 | \u000~\u0039 |
'A'~'Z' | 65~90 | \U0041~\U005A |
'a'~'z' | 97~122 | \u0061~\u007A |
Java程序中,可以使用像"X'、1'和'$'这'A~'Z'这样的ASCII字符,也可以使用Unicode码。例如, 下面的语句是等价的:
char letter='A'
char letter='\u0041'; // Character A' s Unicode is 0041;
俩条语句都将字符A赋值给char型变量letter。