Java |字符运算ASCII的整数

时间:2018-09-30 04:37:28

标签: java

我下面有一个我一直在努力理解的简单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'部分令人困惑,它到底在做什么?

2 个答案:

答案 0 :(得分:4)

让我们这样看。

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()函数将字符串“代码”转换为字符数组,并引用该数组的第0个元素,即1
  2. 1减去ASCII值1
  3. 然后打印a的ASCII值,即97

希望这会有所帮助!

编辑:以下是ASCII查找表的良好参考:http://www.asciitable.com/

答案 1 :(得分:1)

由于Java字符的算术运算导致整数的形成。

           char a='1',b='3';
           char x=a+b;//compilation error

因此对Java字符的算术运算发生在ASCII级别 因此,您必须将其强制转换为char并分配给x。

            char x=(char)(a+b);//executed

您可能会在here

上找到更好的解释