(char)(i+;';a';)JAVA:what';这里发生了什么事?

(char)(i+;';a';)JAVA:what';这里发生了什么事?,java,Java,我遇到了一段类似的代码: public class print { public static void main(String[] args) { for (int i = 0; i < 6; i++) { System.out.print((char) (i + 'a')); } } } 公共类打印{ 公共静态void main(字符串[]args){ 对于(int i=0;i

我遇到了一段类似的代码:

public class print {
    public static void main(String[] args) {
        for (int i = 0; i < 6; i++) {
            System.out.print((char) (i + 'a'));
        }
    }
}
公共类打印{
公共静态void main(字符串[]args){
对于(int i=0;i<6;i++){
系统输出打印((字符)(i+a');
}
}
}
如果我运行它,我会得到“abcdef”

我的问题是关于这个表达式:
(char)(i+'a')


我直觉地知道发生了什么,但我想要一个严格的逐步解释计算机是如何翻译的。如一些答案所示,字符只是一个显示为字符的数字。很好,但是这个带括号的语法实际上是做什么的呢?这是一种转换吗?我也可以将其用于其他类型吗?

Java
char
是一种16位整数类型
'a'
97
相同,您可以通过
System.out.println((int)'a')看到它
-在整个ASCII表中,
98
'b'
,依此类推。
a
的值是
97

When i = 0, i + 'a' = 0 + 97 => When cast into char, it will be a
When i = 1, i + 'a' = 1 + 97 => When cast into char, it will be b
When i = 2, i + 'a' = 2 + 97 => When cast into char, it will be c
...and so on

您可以将
char
用作
integer
值,反之亦然

以下代码可能会有所帮助:

char aChar = 'a'; // a char
int aCharAscii = aChar; // 97

char bChar = 'a' + 1; // b char
int bCharAscii = aChar + 1; // 98

char
是一个原语,而不是一个对象,因此“
char
-type对象”没有意义。char使用character的asci值转换为int。我觉得这个问题以前已经被回答过了。