我下面有一个我一直在努力理解的简单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'部分令人困惑,它到底在做什么?
答案 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,这就是该函数的输出。
回顾:
希望这会有所帮助!
编辑:以下是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
上找到更好的解释