以下代码中的" - 97"是什么意思?

gre*_*reg 3 java string search contains linked-list

以下代码中的" - 97"是什么意思?

if (dictionary[(int) word.charAt(0) -97 ].contains(word))
Run Code Online (Sandbox Code Playgroud)

我们创建了一个26 LinkedList的数组来模拟字典.每个列表包含以"a","b","c",...开头的所有单词."Z".代码由讲师给出.

以下是附注:

搜索特定MyLinkedList中的单词

假设您要搜索的单词位于名为wordstr的String类型变量中.

dictionary [(int)wordstr.charAt(0) - 97].contains(wordstr) ; 
Run Code Online (Sandbox Code Playgroud)

允许你跳转到正确的链表,并且包含将返回true/false,具体取决于单词是否在列表中.

我只是不明白为什么"-97"

Era*_*ran 8

97是字符'a'的数值,因此如果从'a'和'z'之间的字符中减去97,则将该字符映射到0到25​​之间的数组索引.

  • @greg因为混乱你刚才我们把这些数字称为"魔法",一般[我们应该避免它们](http://stackoverflow.com/questions/47882/what-is-a-magic-number-and-why-是,它坏).而不是`(int)word.charAt(0)-97`部分可以写成`(int)wordstr.charAt(0) - 'a'`这可能更具可读性(如果你知道你可以减去字符在Unicode表中获取表示其*distance*的整数. (2认同)