3

在 Currency.java 文件中有一行。

    private static final int A_TO_Z = ('Z' - 'A') + 1;

这是什么意思?我以前没有看到这个。A_TO_Z 的值是什么以及为什么它使用“Z”而不是数字。

4

4 回答 4

4

使用此表达式,您将chars 视为ints,使用字符的 Unicode 值而不是字符本身。

'Z' - 'A' + 1

会变成

90 - 65 + 1 (=26)
于 2013-05-15T14:29:29.723 回答
3

'Z'是一个整数值为 的字符90
'A'是一个整数值为 的字符65

90 - 65 + 1 = 26

于 2013-05-15T14:30:07.293 回答
2

讨厌。'A' 是 A 的 ASCII 值的字符文字(十进制的 65)。'Z' 是 90。所以 A_TO_Z 是 26,即英文字母表中的字母数。

于 2013-05-15T14:29:47.677 回答
1

字符根据其在字符表中的值具有数值。该表达式利用了从 A 到 Z 的所有字母在基础编码表中具有连续值的事实,因此从最后一个值中减去第一个值 (+1) 给出了英文字母表的长度。在这种情况下,实际数值并不重要,代码对读者来说或多或少是不言自明的。如果使用的编码以不同的方式分布字母,则表达式将变得不正确。

于 2013-05-15T14:32:32.667 回答