为什么此代码打印97?我以前没有在我的代码中的任何其他位置分配97到'a'。
public static void permutations(int n) {
System.out.print('a' + 0);
}
答案 0 :(得分:5)
a
的类型为char
,字符可以隐式转换为int
。 a
由97表示,因为这是small latin letter a
的代码点。
System.out.println('a'); // this will print out "a"
// If we cast it explicitly:
System.out.println((int)'a'); // this will print out "97"
// Here the cast is implicit:
System.out.println('a' + 0); // this will print out "97"
第一个来电是println(char)
,其他来电是println(int)
。
答案 1 :(得分:4)
是。 char
(s)在Java中具有内在int
值。 JLS-4.2.1. Integral Types and Values说(部分),
整数类型的值是以下范围内的整数:
...
对于
char
,从'\u0000'
到'\uffff'
,包括0
到65535
当然,当您执行整数运算('a' + 0
)时,结果为int
。
JLS-4.2.2. Integer Operations部分说,
数值运算符,其值为
int
或long
:...
加法运算符+和 - (§15.18)
答案 2 :(得分:2)
System.out.println('a' + 0); // prints out '97'
'一个'隐式转换为其unicode值(即“97”),0是整数。 所以:int + int - > INT
System.out.println('a' + "0"); // prints out 'a0'
所以:char + string - >串
答案 3 :(得分:1)
因为'a'
已被隐式转换为其unicode值,并将其与0相加。