爪哇 |整数到字符操作 ASCII



我有以下简单的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,这就是该函数的输出。

回顾一下:

  1. 使用 .charAt(( 函数将字符串"code"转换为字符数组,并引用数组的第 0 个元素,即 1
  2. ASCII 值 1 是从 1 中减去的
  3. 然后打印 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

你可能会在这里找到更好的解释

最新更新