字符型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);
}
}
我们对以上的程序编译并运行,请看下图结果:
我们可以看到 Java 中的 char 类型确实可以储存一个汉字。我们再来看以下程序,假设字符我们采用双引号括起来会怎么样:
public class CharTest01 {
public static void main(String[] args) {
char c = "中";
System.out.println(c);
}
}
我们对以上的程序进行编译,请看下图编译结果:
我们看到编译器报错了,并且提示的错误信息是 “不兼容的类型” ,这是因为双引号括起来的不是 char 类型,而是 String 类型,其实 String 类型就是 Java 中的字符串类型,但大家要知道字符串不属于基本数据类型,而是引用数据类型,所以类型不兼容。接下来我们来测试一下两个或多个字符是否可以使用单引号括起来,请看以下代码:
public class CharTest01 {
public static void main(String[] args) {
char c = 'ab';
System.out.println(c);
}
}
我们对以上的程序进行编译,请看下图编译结果:
我们可以看出,编译器报错了,错误信息是“未结束的字符文字”,这是因为 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");
}
}
我们对以上的程序进行编译并运行,请看下图结果:
对于以上程序,表面看起来 ' \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');
}
}
我们对以上的程序进行编译并运行,请看下图运行结果:
通过以上代码的测试,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语言中 \ 具有转义功能,常见的转义字符要知道代表什么含义。
(本文仅代表个人观点,不喜勿喷!)
点击下方链接↓,获取更多知识: