问题描述
class Example{
public static void main(String args[]){
char a='a';
System.out.println(a=='\u0061');
System.out.println(\u0061=='\u0061');
System.out.println(\u0061==97);
\u0061='\u0041';
System.out.println('A'=='\u0041');
System.out.println(65=='\u0041');
System.out.println(65==a);
System.out.println('\u0041'==a);
}
}
输出:真*7
我无法理解这段代码。 请帮忙
1楼
根据:
\\uxxxx 形式的 Unicode 转义符,其中 xxxx 是十六进制值,表示编码为 xxxx 的 UTF-16 代码单元。
字符'a'的 unicode 值为 97(十六进制为 61), 'A'的 unicode 值为 65(十六进制为 41)。
因此,源\a中的字符\a被读作a ,而字符\A被读作A 。
您的代码读作:
class Example{
public static void main(String args[]){
char a='a';
System.out.println(a=='a');
System.out.println(a=='a');
System.out.println(a==97);
a='A';
System.out.println('A'=='A');
System.out.println(65=='A');
System.out.println(65==a);
System.out.println('A'==a);
}
}
2楼
char a='a';- 变量a存储小写字符System.out.println(a=='\a');- 在 UTF 小写中,字符表示为-
System.out.println(\a=='\a');-\a值未加引号,因此将其使其a=='\a',实际上与第 2 点相同。 -
System.out.println(\a==97);- 同上,因为 97dec = 61hex 除了这里我们不使用 UTF 表示法来表示字符,而是使用char数值 \a='\A';-a变量赋值为 ,它是大写的A-
System.out.println('A'=='\A');- 与第 2 点相同 System.out.println(65=='\A');- 65dec = 41hex,与第 4 点相同,但这里我们比较的是两个常量,而不是a变量。-
System.out.println(65==a);- 看上面 System.out.println('\A'==a);- 看上面