问题描述
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);
- 看上面