(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。我觉得这个问题以前已经被回答过了。