两个字符之间的减法如何工作?

How does subtraction between two Chars work?

我想弄清楚下面的代码,但未能理解两个字符之间的减法运算:

String s = "rsjrcntuanbqchsfahvijh";
int[] letters = new int[26];
for(int i = 0; i < s.length(); i++){
    letters[s.charAt(i) - 'a']++;
}

我的意思是,我理解代码的作用:它找到给定字符串中字母表中每个字母的频率并将其保存在数组中。但我无法真正理解减法。这两个 Chars 的 unicode 值是否用于此操作?我错过了什么?

减去2个字符的ASCII值

一个 char 实际上只是存储为一个数字(它的代码点值)。我们有像 char c = 'A'; 这样的语法来表示字符,但它等同于 char c = 65; 'A' == 65 是真的。

因此,在您的情况下,字母[0] 处的值将随着字符串中每个 'a' 的增加而递增,依此类推。

因此在每个位置,你得到每个字母的频率。