我有以下简单的Java程序,我正在努力理解。有人可以在这里帮忙吗?
class Solution {
public static void main (String args[])
{
String code ="1123";
System.out.println( (code.charAt(0) - '1' + 'a' ));
}
}
输出 : 97
我知道它返回字符"a"的 ASCII 值,但是 - "1"+"a"部分令人困惑,它到底在做什么?
让我们这样看。
String code ="1123";
System.out.println( (code.charAt(0) - '1' + 'a' ));
在这种情况下,code.charAt(0)
调用实质上是将代码字符串转换为数组,并获取第 0 个元素,即 1。
所以,正在发生的数学是ASCII级别的,就像你注意到的那样。 1 的 ASCII 值为 49,a 的 ASCII 值为 97。
所以数学说:49 - 49 + 97
众所周知,它等于 97,这就是该函数的输出。
回顾一下:
- 使用 .charAt(( 函数将字符串"code"转换为字符数组,并引用数组的第 0 个元素,即 1
- ASCII 值 1 是从 1 中减去的
- 然后打印 a 的 ASCII 值,即 97
希望这有帮助!
编辑:这是ASCII查找表的一个很好的参考:http://www.asciitable.com/
由于 java 字符上的算术计算会导致整数的形成。
char a='1',b='3';
char x=a+b;//compilation error
因此,Java 字符上的算术运算发生在 ASCII 级别 因此,您必须将其转换为 char 并分配给 x。
char x=(char)(a+b);//executed
你可能会在这里找到更好的解释