字符在Java中是否具有内在的int值?

时间:2014-12-30 00:54:09

标签: java char int

为什么此代码打印97?我以前没有在我的代码中的任何其他位置分配97到'a'。

public static void permutations(int n) {
    System.out.print('a' + 0);
}

4 个答案:

答案 0 :(得分:5)

a的类型为char,字符可以隐式转换为inta由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)

相关: In what encoding is a Java char stored in?

答案 1 :(得分:4)

是。 char(s)在Java中具有内在int值。 JLS-4.2.1. Integral Types and Values说(部分),

  

整数类型的值是以下范围内的整数:

     

...

     

对于char,从'\u0000''\uffff',包括065535

当然,当您执行整数运算('a' + 0)时,结果为int

JLS-4.2.2. Integer Operations部分说,

  

数值运算符,其值为intlong

     

...

     

加法运算符+和 - (§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相加。