3

在网上看到 Java 编程练习的解释时,我发现了以下代码:

int[] count = new int[128];
int length = 0;
for(char c: s.toCharArray()){
    if(++count[c] == 2){
        length += 2;
        count[c] = 0;
    }
}

我了解代码的作用,但我不知道它如何使用 char 索引(iecount[c],其中 c 是 char)访问数组元素。我认为索引只能是整数?

4

3 回答 3

4

char 被隐式​​转换为 int。索引仍然是一个 int。

于 2019-09-03T14:44:40.027 回答
1

char(16 位)是 int(32 位),反之亦然。这是一个隐式转换,特别是 char 到 unsigned int。在这种情况下,索引可能是表示此字符的 ASCII 代码(对于 ASCII 字符)。

于 2019-09-03T14:56:57.280 回答
0

所以基本上每个字符都是由 Ascii 值定义的。因此,当您尝试将 char 用作 int 时。它将使用它作为定义的 Ascii 值。

这就是它工作的原因。

于 2019-09-03T14:57:50.680 回答