理论教育 Java字符型数据(char)及其计算方法

Java字符型数据(char)及其计算方法

时间:2023-11-20 理论教育 版权反馈
【摘要】:Java中的字符型数据用关键字char表示。也就是说,可以将char字符型当做无符号整型数处理。字符变量的值实际上是无符号整型数,可以对其进行计算。

Java字符型数据(char)及其计算方法

Java中的字符型数据用关键字char表示。Java使用Unicode字符集。每个char类型数据占用2字节,是无符号的二进制数。每个字符变量只能存放一个字符,字符常数用Unicode字符表示并用一对单引号”作为定界标记,如:

978-7-111-34450-6-Chapter03-29.jpg

也可以使用Unicode码表示一个字符:

978-7-111-34450-6-Chapter03-30.jpg

字符类型与整型数可以相互转换,可以用字符表示一个无符号整型数,也可以使用无符号整型数表示一个字符。以下面程序段为例:

978-7-111-34450-6-Chapter03-31.jpg

978-7-111-34450-6-Chapter03-32.jpg

运行的结果应该是:

978-7-111-34450-6-Chapter03-33.jpg

程序段的第一行输出语句显示的是字符变量a,因此显示的是字符,其中整型数20013是汉字“中”字的Unicode码值。后两个输出语句显示的是整型变量b和c,因此显示的结果是数值,该数值表示对应字符的Unicode码值。如字符A的Unicode码值为65。

可以看出,字符型实际上是整型数int的一个子集。也就是说,可以将char字符型当做无符号整型数处理。如:

978-7-111-34450-6-Chapter03-34.jpg

例如,对大小写字母进行转换:

978-7-111-34450-6-Chapter03-35.jpg

例如将数字字符转换为数值:

978-7-111-34450-6-Chapter03-36.jpg

1.转义符

在计算机字符中,表示字母、数字、符号等字符比较容易,但有些字符已经有了特殊意义,如换行符、制表符等符号,则不能显式地在字面上进行表示,这时可以采用转义符进行描述。使用符号“\”的字符,称为转义字符。常用的转义符如表3-3。

表3-3 常用的转义符

978-7-111-34450-6-Chapter03-37.jpg

其他常用的转义符有:

978-7-111-34450-6-Chapter03-38.jpg

例如:

978-7-111-34450-6-Chapter03-39.jpg

输出语句只有一行,但输出结果却有两行,其中的\n表示另起一行:

978-7-111-34450-6-Chapter03-40.jpg

又如:

978-7-111-34450-6-Chapter03-41.jpg

输出结果只有一行,其中的\t表示Tab跳格:

978-7-111-34450-6-Chapter03-42.jpg(www.daowen.com)

注意:表示字符时要使用一对单引号“”将字符括起。在这里,单引号“”是字符的定界符,一对单引号之中只能有一个字母、汉字或其他字符,例如:c9%л等。

表示字符不能使用双引号"",双引号是字符串的定界符,双引号括起的内容是字符串,字符串中的字符的个数是任意的,字符串可以只有一个字符,或没有字符的空串,例如:

978-7-111-34450-6-Chapter03-43.jpg

如果要表示直双引号"、直单号、斜杠\等这些英文字符,或在字符串中包含"、、\等这些符号时,就必须使用转义符来表示。这时看上去是两个字符,但前面的斜杠\只表示转义,后一个字符才是要真实表示的字符。例如:

978-7-111-34450-6-Chapter03-44.jpg

这种写法是错误的,中间的两个直引号"应该是字符串的一部分,而前后两个直引号"是字符串的定界符。多个"的使用,产生了语法上的歧义。因此要使用转义符\进行处理,所以该语句行应该写成:

978-7-111-34450-6-Chapter03-45.jpg

如果使用的是汉字的符号,就不需要转义符,因为汉字符号如“”、‘’与英文符号"、等不会产生歧义。例如:

978-7-111-34450-6-Chapter03-46.jpg

在转义符后面加上数值,是使用Unicode码表示字符的一种方式。转义符后面可以使用八进制数或十六进制数。使用八进制数时,转义符\后面直接跟着八进制数,不需要在前面加0。例如:

978-7-111-34450-6-Chapter03-47.jpg

使用十六进制数时,格式是\u后面跟着四位十六进制数,例如:

978-7-111-34450-6-Chapter03-48.jpg

【例3-3】程序使用不同的数值格式对字符变量进行赋值,最终输出结果都是字符。

978-7-111-34450-6-Chapter03-49.jpg

程序运行结果:

978-7-111-34450-6-Chapter03-50.jpg

【例3-4】本程序进行大小写字母转换,并将数字字符转换为数值。字符变量的值实际上是无符号整型数,可以对其进行计算。

978-7-111-34450-6-Chapter03-51.jpg

978-7-111-34450-6-Chapter03-52.jpg

程序运行结果:

978-7-111-34450-6-Chapter03-53.jpg

注意到例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

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈