好好学Java:从零基础到项目实战
上QQ阅读APP看书,第一时间看更新

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);

像上面通过添加反斜杆来表达特殊字符的方式,在编程语言里面称作“转义”,添加了反斜杆的字符形式被称为“转义符”。