猫史档案馆


[教程帖]Java学习教程(第六章)[数据类型]{字符型详解 理解}

用户:GodeyesGodeyes查看:0 回复:5 评论:0 创建时间:2020-04-30T07:40:28


--Godeyesjavaemotion_编程猫_嗨起来emotion_编程猫_厉害了

6.4

字符型 char 在 Java 语言中占用 2 个字节,char 类型的字面量必须使用半角的单引号括起
来,取值范围为[0-65535],char 和 short 都占用 2 个字节,但是 char 可以取到更大的正整数,因为 char 类型没有负数。
Java 语言中的 char 类型变量可以容纳一个汉字。请看以下程序:

public class CharTest01{
    public static void main(String[] args){
        char c = '中';
        System.out.println(c);
    }
}

我们对以上的程序编译并运行,请看下图结果:

center_image

  我们可以看到 Java 中的 char 类型确实可以存储一个汉字。我们再来看以下程序,假设字
符我们采用双引号括起来会怎样:

public class CharTest01{
    public static void main(String[] args){
        char c = "中";
        System.out.println(c);
    }
}

我们对以上的程序进行编译,请看下图编译结果:

center_image

  我们看到编译器报错了,并且提示的错误信息是“不兼容的类型”,这是因为双引号括起来不是 char 类型,而是 String 类型,其实 String 类型就是 Java 中的字符串类型,但大家要知道字符串不属于基本数据类型,而是引用数据类型。所以类型不兼容。接下来我们来测试一下两个或多个字符是否可以使用单引号括起来,请看以下代码:

public class CharTest01{
    public static void main(String[] args){
        char c = 'ab';
        System.out.println(c);
    }
}

我们对以上的程序进行编译,请看下图编译结果:

center_image

  我们可以看出,编译器报错了,错误信息是“未结束的字符文字”,这是因为Java 中有规定,字符型只能是单个字符,当编译器检测到'ab'的时候,左边以单引号开始,继续检测到 a字符,然后编译器会继续检查下一个字符是否为另一半单引号,结果不是,而是 b,所以编译器报错了。这也说明了 Java 中的字符只能是单个字符,不能是多个字符。
  接下来,我们再来看一看关于转义字符,转义字符指用一些普通的字符组合代表一些特殊的字符,由于组合用的字符改变了原意,称为转义字符。Java 中的转义字符以 \ 开始,常见的转义字符有:\t、\n、\u、\\、\',\",其中\t 代表制表符,\n 是换行符,\\表示一个普通的\字符,\'表示一个普通的',\"表示一个普通的"。请看以下代码:

public class CharTest02 {
    public static void main(String[] args) {
        char c1 = 't';
        System.out.println("这是一个普通的字符 = " + c1);
        char c2 = '\t';
        System.out.println("abc" + c2 + "def");
    }
}

我们对以上的程序进行编译并运行,请看下图结果:

center_image

  对于以上程序,表面看起来'\t'是由两个字符构成,按说应该编译报错,因为它毕竟是两个字符组成的字符串,可是最终的结果编译通过了,并且正常运行了,这说明了'\t'表示 1 个字符,所以\具有转义功能,根据以上输出结果可以看出\t 是制表符(abc 和 def 之间的空白就是制表符)。接下来我们来看一看其它的转义字符。请看以下程序:

public class CharTest03 {
    public static void main(String[] args) {
        System.out.println("hello\nworld");
        System.out.println('\'');
        System.out.println('\\');
        System.out.println("\"");
        System.out.println('\u4e2d');
    }
}

我们对以上的程序进行编译并运行,请看下图运行结果:

center_image 

通过以上代码的测试,hello 和 world 之间换行了,所以\n 代表一个换行符。
 

对于以上代码的第 4 行 '\'' 来说,这里的 \ 是不能去掉的,如果去掉之后代码就变成了''',那么此时编译器会报错,因为单引号'在 Java 中有特殊含义,在这个'''代码当中第一个单引号'会主动和第二个单引号'配对,此时最后的单引号'就是多余的了,不符合 Java 的语法,所以会导致编译错误,如果这个时候在第二个单引号'前面添加 \ 进行转义,代码是'\'',那么此时第二个单引号 \' 就是一个不具备特殊含义的普通单引号字符,这个时候第一个单引号'会和最后一个单引号'配对。编译和运行就正常了。
 

对于以上代码第 6 行来说和第 4 行的原理是相同的,代码 \" 表示普通的双引号字符。
 

对于第 5 行代码来说,代码 \\ 联合起来表示一个普通的 \ 字符,在 Java 中 1 个 \ 字符不是普通的 \ 字符,具有特殊的作用就是转义,我们想让其变成一个普通的 \ 字符需要使用两个 \ 来表示,代码 \\ 中,第一个 \ 具有转义功能,第一个 \ 将第二个 \ 转换成普通的 \ 字符,以此类推,如果代码是 \\\\ 这样,则表示结果是 \\。
 

对于第 7 行代码来说,如果代码修改为'u4e2d'必然报错,因为 u4e2d 在这个时候是一个普通的字符串,字符串是不能使用单引号括起来的,如果在 u 字符前添加转义字符 \ 则表示的含义就不同了,\u 转义之后表示后面的 4e2d 是一个 unicode 码,根据 unicode 字符集可以查询到汉字'中'的 unicode 码就是 4e2d,所以最终输出结果是汉字'中'。

  综上所述,\n 表示换行符,\'表示普通的单引号字符,\\表示一个普通的\字符,\"表示一个
普通的双引号字符,\u 后面的十六进制是文字的 unicode 编码。
 

通过本小节的学习,我们需要掌握的是,在 Java 语言中,字符 char 类型的数据只能使用
单引号括起来,并且在 Java 语言中 char 类型完全可以存储一个汉字,另外还需要知道在 Java
语言中 \ 具有转义功能,常见的转义字符要知道代表什么含义。


回复

上一页1 页 / 共 1下一页
闪电劈死你闪电劈死你

沙发

点赞0


评论


ZLS_桃ZLS_桃

板凳

点赞0


评论


蒟蒻OIer1048576蒟蒻OIer1048576

有点枯燥……

点赞0


评论


GodeyesGodeyes

dddddd

点赞0


评论


GodeyesGodeyes

Java学习教程(第一章)[介绍java]:https://shequ.cod喵/community/281707
 java学习教程(第二章)[java的注释]:https://shequ.cod喵/community/281722
Java(第三章)[编写第一个java程序]:https://shequ.cod喵/community/281753
Java(特殊篇)[运行和编译java程序]:https://shequ.cod喵/community/281785
 Java学习教程(第四章)[标识符与关键字]:https://shequ.cod喵/community/282020
 Java学习教程(第五章)[变量]{1.字面量}:https://shequ.cod喵/community/282531
Java学习教程(第五章)[变量]{变量概述}:https://shequ.cod喵/community/283059
 Java学习教程(第五章)[变量]{使用变量}:https://shequ.cod喵/community/283194
 [教程帖]Java学习教程第五章[变量]{变量分类}:https://shequ.cod喵/community/283732
 [教程帖]Java学习教程(第五章)[变量]{变量作用域和章节总结}:https://shequ.cod喵/community/283745
 [教程帖]Java学习教程(第六章)[数据类型]{数据类型概述}:https://shequ.cod喵/community/284512
 [教程帖]Java学习教程(第六章)[数据类型]{字符编码}:https://shequ.cod喵/community/285286
 [教程帖]Java学习教程(第六章)[数据类型]{字符型详解 理解}:https://shequ.cod喵/community/286136

点赞0


评论