问题阐述
在 Java 语言中,是否可以将字符与代表字符的编码进行比较?
在 Java 语言中,字符类型用于存储单个字符,它占用 16 位(2 字节)的内存空间,使用关键字 char 进行标识。
因为计算机只能存储二进制数据,所以需要将字符通过一串二进制数据来表示,也就是通常所说的字符编码。Java 对字符采用 Unicode 字符编码,Unicode 使用 2 字节表示 1个字符,并且 Unicode 字符集中的前 128 个字符与 ASCII 字符集兼容。
例如,字符a的 ASCII 编码的二进制数据形式为 01100001,Unicode 字符编码的二进制数据形式为 00000000 01100001,它们都表示十进制数 97。从中可以看出与 C、C++一样,Java 同样把字符作为整数对待。所以,在进行条件判断时,就可以将字符与代表字符的编码进行比较。例如,下面的代码将输出“条件成立”。
public static void main(String[] args) {
if (d == 100) {
System.out.println("条件成立");
} else {
System.out.println(("条件不成立");
}
注意:
在上面的代码中,由于字符d的编码为 100,所以等式“d == 100”成立。如果将字符 d 两侧的单引号换成双引号,程序将出错。这是因为 Java 中的字符常量值必须用英文状态下的一对单引号括起来。
点评
在程序设计中,字符型数据使用得比较频繁。它占用 2 字节,以单引号表示。在此要注意的是,字符与字符串是不同的。例如,a表示一个字符,"a"就表示一个字符串。虽然都只有一个字符,但由于后者使用双引号括起来,所以它仍然表示字符串。字符型只能表示单个字符,任何超过一个字符的内容,都不能被声明为字符型。如果一个变量被声明为字符型,也就是使用 char 关键字进行声明,那么这个变量只能被赋予一个整数值,或是用单引号括起来的一个字符。