5.1.1 字符类型
前面介绍的Java编程要么是与数字有关的计算,要么是与逻辑有关的推理,充其量只能实现计算器和状态机。若想让Java运用于更广阔的业务领域,就得使其支撑更加血肉丰满的业务场景,而丰满的前提是能够表达大众熟知的人类语言和文字。对于英文世界来说,除了数字之外,编程语言起码还要支持A、B、C、D、x、y、z等大小写字母,以及常见的标点符号。由于现有的基本变量类型仅能表示各类数字与布尔值,因此要引入新的变量类型来存放字母和符号,这个新的类型被称作字符型char。
有别于其他的基本类型,一个具体的字符值必须用单引号引起来,这样才能区分数字数值与数字字符,而且变量名称和字符形式的变量值也不会混淆。譬如下面的代码将示范如何声明字符变量,以及如何把各类字符赋值给该字符变量(完整代码见本章源码的src\com\string\character\TypeChar.java):
char a='A'; // 声明一个字符变量,并对其赋值 System.out.println("a=" + a); char tian='田'; // 字符包括英文字符,也包括中文字符 System.out.println("tian=" + tian); char one='1'; // 字符还包括数字字符和标点符号 System.out.println("one=" + one);
与其他类型相似,字符类型也有对应的字符数组char[]。除了类型名称变更外,其他的用法与整型数组保持一致。下面是字符数组简单用法的代码例子:
char[] array=new char[]{'A', 'B', 'C'}; // 声明一个字符数组,并对其初始化 //char[] array={ 'A', 'B', 'C' }; // 简化之后的字符数组初始化操作 for (char item : array) { // 遍历并打印字符数组中的每个字符 System.out.println("item=" + item); }
虽然大部分的字母和符号都能直接书写自身字符,但是少数特殊符号没有对应的表现字符,包括制表符、回车符、换行符等,此时必须通过某种格式的式子来表示这些特定字符。在Java代码中,使用'\t'表达一个制表符,使用'\r'表达一个回车符,使用'\n'表达一个换行符。还有其他几个符号,尽管存在对应的标点,可是标点已经约定另有用途,比如两个单引号''用来包裹单个字符,两个双引号""用来包裹一串文本,反斜杆\则被用于表达换行符'\n'等。因此,这几个标点只好另想办法,一样得在符号前面补充反斜杆,如'\''表达的是单引号字符,'\"'表达的是双引号字符,'\\'表达的是反斜杆字符。这些特殊符号的赋值代码示例如下:
// 下列是特殊字符的转义表达形式 char tab='\t'; // 制表符的转义符为\t System.out.println("tab=" + tab); char enter='\r'; // 回车符的转义符为\r System.out.println("enter=" + enter); char line='\n'; // 换行符的转义符为\n System.out.println("line=" + line); char singleQuote='\''; // 单引号的转义符为\' System.out.println("singleQuote=" + singleQuote); char doubleQuote='\"'; // 双引号的转义符为\" System.out.println("doubleQuote=" + doubleQuote); char reverseTilt='\\'; // 反斜杆的转义符为\\ System.out.println("reverseTilt=" + reverseTilt);
像上面通过添加反斜杆来表达特殊字符的方式,在编程语言里面称作“转义”,添加了反斜杆的字符形式被称为“转义符”。