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);
}
}
输出:true * 7
我听不懂这段代码。请帮助
答案 0 :(得分:1)
根据Java Language Specification:
\ uxxxx格式的Unicode转义符,其中xxxx是十六进制值,表示编码为xxxx的UTF-16代码单元。
字符'a'
的unicode值为97(十六进制为61),'A'
的unicode值为65(十六进制为41)。因此,源中的字符\u0061
被读为a
,字符\u0041
被读为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);
}
}
答案 1 :(得分:-1)
char a='a';
-变量a
存储小写字符System.out.println(a=='\u0061');
-以UTF小写表示的字符表示为\u0061 System.out.println(\u0061=='\u0061');
-\u0061
的值未加引号,因此它是decoded into lowercase a during compilation使其a=='\u0061'
,实际上与第2点相同。System.out.println(\u0061==97);
-与上面相同,因为97dec = 61hex,只是在这里我们不使用UTF表示法来表示字符,而是使用数值char
\u0061='\u0041';
-a
的变量\u0041的变量值是大写的A
System.out.println('A'=='\u0041');
-与第2点相同System.out.println(65=='\u0041');
-65dec = 41hex,与第4点相同,但是这里我们比较的是两个常量,而不是a
变量。System.out.println(65==a);
-见上文System.out.println('\u0041'==a);
-参见上文