Java除了处理数值数据类型外,还可以处理字母和符号,这些都可以称为字符(Character)。
Java使用Unicode编码,Unicode 定义了一个字符集,能够表示所有人类语言中的字符。标准的8位ASCII字符集是 Unicode 的一个子集,取值范围为 0 到 127。因此,ASCII 字符在 Java 中仍然是有效的字符。由于字符的表示是数字形式的,这意味着我们可以将之前提到的区间内的整数值转换为字符值。
Java 是为全球使用而设计的。因此,它需要使用一种能够表示世界上所有语言的字符集。Unicode 就是专门为这一目的而设计的标准字符集。当然,对于像英语、德语、西班牙语或法语这样的语言来说,使用 Unicode 是低效的,因为它们的字符可以用 8 位来表示。但为了实现全球通用性,这是必须付出的代价。
根据不同的操作系统,某些字符可能不被支持。这意味着这些字符不会显示出来,或者会被替换为一个无效的字符。对于空格字符也是如此。
字符串也可以理解为若干字符组成的,比如之前使用过的"Hello Java 25!"就是由字母,数字,开个及感叹号等组成。虽然在业务开发中很少直接使用字符,但字符串使用非常频繁。
11.1 char类型
字符数据类型占用2字节,16位无符号整数,采用UTF-16编码;在业务系统开发中使用不多。
可使用Character.MAX_VALUE和Character.MIN_VALUE获得最大值与最小值
Java开发中,使用char关键字声明的变量即是字符类型的数据,如果为其赋值,则应该是字符,java中字符字面量需要使用单引号引起来,其表示形式有一下几种:
-
单引号引起来的单个字符:‘a’, ‘男’,这是最常见的类型,要注意单引号之间有且只能有一个字符
-
字符转义序列: ‘\r’,\n’,‘\"’、‘\t’,这种形式一般用于字符串中
-
Unicode转义序列: ‘\u0041’,使用不多
-
八进制转义序列: ‘\000’ ~ ‘\377’,使用不多
最常见的是如下的写法:
char c1 = 'a';
11.2 转义字符
转义字符一般用于表示不能直接显示的字符,以\开头,以下是常见的转义字符:
| 转义序列 | 描述 |
|---|---|
| \ddd | 八进制 |
| \uxxxx | 十六进制Unicode字符 |
| \’ | 单引号 |
| \" | 双引号 |
| \\ | 反斜杠 |
| \r | 回车 |
| \n | 新行 |
| \t | 制表符 |
| \b | 退格键 |
| \s | 空格,Java 15新增 |
| \ | 继续行,出现在行的末尾,Java 15新增,用于文本块 |
在程序中声明char类型的变量并赋值为单引号,这时就需要使用转义:
char c2 = '\'';
System.out.println(c2); // 输出单引号
如果在字符串字面量中使用转义字符也是同样的效果:
System.out.println("你好,我是\"老谭\"。\t\t我正在写代码...");
上面的字符串字面量中,为了输出双引号,只能使用转义字符的写法,否则要输出的双引号和包含字符的双引号凑成一对会产生语法错误,而制表符则是在输出产生Tab按键的效果,即产生空格。
11.3 ASCII码
ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)是一套基于拉丁字母的字符编码,共收录了 128 个字符,用一个字节就可以存储,它等同于国际标准 ISO/IEC 646。
以下是字母与数字对应的ASCII码:
| 小写字母 | ASCII码 | 大写字母 | ASCII码 | 数字 | ASCII码 |
|---|---|---|---|---|---|
| a | 97 | A | 65 | 0 | 48 |
| b | 98 | B | 66 | 1 | 49 |
| c | 99 | C | 67 | 2 | 50 |
| d | 100 | D | 68 | 3 | 51 |
| e | 101 | E | 69 | 4 | 52 |
| f | 102 | F | 70 | 5 | 53 |
| g | 103 | G | 71 | 6 | 54 |
| h | 104 | H | 72 | 7 | 55 |
| i | 105 | I | 73 | 8 | 56 |
| j | 106 | J | 74 | 9 | 57 |
| k | 107 | K | 75 | ||
| l | 108 | L | 76 | ||
| m | 109 | M | 77 | ||
| n | 110 | N | 78 | ||
| o | 111 | O | 79 | ||
| p | 112 | P | 80 | ||
| q | 113 | Q | 81 | ||
| r | 114 | R | 82 | ||
| s | 115 | S | 83 | ||
| t | 116 | T | 84 | ||
| u | 117 | U | 85 | ||
| v | 118 | V | 86 | ||
| w | 119 | W | 87 | ||
| x | 120 | X | 88 | ||
| y | 121 | Y | 89 | ||
| z | 122 | Z | 90 |
11.4 与整数之间的互相转换
char可以自动转换为对应的ASCII码,就相当于转换为一个参与数学运算的整数:
char c3 = 'a';
System.out.println(c3 + 1); // 输出98
也可以将整数作为ASCII码转换为字符,但是需要在ASCII码前面加上小括号,其中内容为char,这是数据类型强制转换的语法:
System.out.println((char) 65); // 输出A
11.5 小结
本小节主要介绍了Java中的字符数据类型以及预支相关的ASCII码,最后还介绍了它们之间的互相转换。
1952

被折叠的 条评论
为什么被折叠?



