Java中的字符型数据用关键字char表示。Java使用Unicode字符集。每个char类型数据占用2字节,是无符号的二进制数。每个字符变量只能存放一个字符,字符常数用Unicode字符表示并用一对单引号′“′”作为定界标记,如:
也可以使用Unicode码表示一个字符:
字符类型与整型数可以相互转换,可以用字符表示一个无符号整型数,也可以使用无符号整型数表示一个字符。以下面程序段为例:
运行的结果应该是:
程序段的第一行输出语句显示的是字符变量a,因此显示的是字符,其中整型数20013是汉字“中”字的Unicode码值。后两个输出语句显示的是整型变量b和c,因此显示的结果是数值,该数值表示对应字符的Unicode码值。如字符′A′的Unicode码值为65。
可以看出,字符型实际上是整型数int的一个子集。也就是说,可以将char字符型当做无符号整型数处理。如:
例如,对大小写字母进行转换:
例如将数字字符转换为数值:
1.转义符
在计算机字符中,表示字母、数字、符号等字符比较容易,但有些字符已经有了特殊意义,如换行符、制表符等符号,则不能显式地在字面上进行表示,这时可以采用转义符进行描述。使用符号“\”的字符,称为转义字符。常用的转义符如表3-3。
表3-3 常用的转义符
其他常用的转义符有:
例如:
输出语句只有一行,但输出结果却有两行,其中的\n表示另起一行:
又如:
输出结果只有一行,其中的\t表示Tab跳格:
(www.daowen.com)
注意:表示字符时要使用一对单引号′“”将字符括起。在这里,单引号′“”是字符的定界符,一对单引号之中只能有一个字母、汉字或其他字符,例如:′c′,′9′,′%′,′女′,′あ′,′л′等。
表示字符不能使用双引号"",双引号是字符串的定界符,双引号括起的内容是字符串,字符串中的字符的个数是任意的,字符串可以只有一个字符,或没有字符的空串,例如:
如果要表示直双引号"、直单号′、斜杠\等这些英文字符,或在字符串中包含"、′、\等这些符号时,就必须使用转义符来表示。这时看上去是两个字符,但前面的斜杠\只表示转义,后一个字符才是要真实表示的字符。例如:
这种写法是错误的,中间的两个直引号"应该是字符串的一部分,而前后两个直引号"是字符串的定界符。多个"的使用,产生了语法上的歧义。因此要使用转义符\进行处理,所以该语句行应该写成:
如果使用的是汉字的符号,就不需要转义符,因为汉字符号如“”、‘’与英文符号"、′等不会产生歧义。例如:
在转义符后面加上数值,是使用Unicode码表示字符的一种方式。转义符后面可以使用八进制数或十六进制数。使用八进制数时,转义符\后面直接跟着八进制数,不需要在前面加0。例如:
使用十六进制数时,格式是\u后面跟着四位十六进制数,例如:
【例3-3】程序使用不同的数值格式对字符变量进行赋值,最终输出结果都是字符。
程序运行结果:
【例3-4】本程序进行大小写字母转换,并将数字字符转换为数值。字符变量的值实际上是无符号整型数,可以对其进行计算。
程序运行结果:
注意到例3-4中当变量与整型数进行运算时,如:d1=(char)(c1+32);,字符变量c1与整型数32相加,由于整型数(4字节)的精度高于字符型(2字节),相加的结果为整型数,因此赋值给字符变量d1时,需要使用(char)进行类型的强制转换。
2.ASCII码
ASCII码是用7位二进制数表示一个字符,每个字符占用1字节。字节中8位二进制数除了7位为ASCII码值外,最高位为0,共能表示的字符有128个,包括了常用的26个英文大写字母A~Z、26个英文小写字母a~z,数字符号0~9、英文标点符号等。每个字符都有一个对应的ASCII值,如字母′A′的ASCII码值为65,字母′b′的ASCII码值为98,字符′0′的ASCII码值为48等。有关所有字符的ASCII码值见附录B的ASCII码表。
3.Unicode码
Unicode码也叫做统一码、万国码、单一码,是一种在计算机上使用的字符编码。Uni-code码在ASCII码的基础上,扩展了计算机所能表示的字符数量。Unicode码每个字符占用2字节,这样理论上一共最多可以表示216(即65536)个字符,为不同的语言中的每个字符设定了统一并且唯一的二进制编码。除了ASCII码中所有的字符外,Unicode码还包括了GBK、GB 18030、Big5等简体中文、正体中文,以及日文、韩语、希腊文、阿拉伯文等各种编码,基本可以满足世界上各种语言的使用。
Java语言所使用字符编码为Unicode码,每个字符用一个两个字节长的无符号整数作为编码,可以把这个编码看做是这个字符的编号。如′汉′字,其编码为整数27721,写成十六进制是′\u6c49′。
Unicode码包含了所有的ASCII码。由于ASCII码只有一个字节,而Unicode码是两个字节,使用Unicode码表示英文字母、数字等ASCII字符时,只要在原来的ASCII的一个字节前面增加加一个值为0的字节就可以了。如字母′a′使用十六进制表示的ASCII码值为0x61,表示Unicode码时可以写成0x0061。因此,′\u0061′表示英文字母′a′。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。