在 Currency.java 文件中有一行。
private static final int A_TO_Z = ('Z' - 'A') + 1;
这是什么意思?我以前没有看到这个。A_TO_Z 的值是什么以及为什么它使用“Z”而不是数字。
在 Currency.java 文件中有一行。
private static final int A_TO_Z = ('Z' - 'A') + 1;
这是什么意思?我以前没有看到这个。A_TO_Z 的值是什么以及为什么它使用“Z”而不是数字。
使用此表达式,您将char
s 视为int
s,使用字符的 Unicode 值而不是字符本身。
'Z' - 'A' + 1
会变成
90 - 65 + 1 (=26)
'Z'
是一个整数值为 的字符90
。
'A'
是一个整数值为 的字符65
。
90 - 65 + 1 = 26
讨厌。'A' 是 A 的 ASCII 值的字符文字(十进制的 65)。'Z' 是 90。所以 A_TO_Z 是 26,即英文字母表中的字母数。
字符根据其在字符表中的值具有数值。该表达式利用了从 A 到 Z 的所有字母在基础编码表中具有连续值的事实,因此从最后一个值中减去第一个值 (+1) 给出了英文字母表的长度。在这种情况下,实际数值并不重要,代码对读者来说或多或少是不言自明的。如果使用的编码以不同的方式分布字母,则表达式将变得不正确。