用作数组索引的字符是否隐式转换为 byte/int?

Are characters used as index of an array implicitly converted to byte/int?

我检查了下面的代码,在我看来 char 值在作为数组的索引插入时(在本例中为 int 数组)被转换为 ascii 格式。

例如char 'a' 会变成97(十进制格式)。

我想知道:这是到 int/byte 类型的隐式转换吗?

public int getNoOfUniqueCharacters(String str) {
        int[] charSet       = new int[128];
        char[] characters   = str.toCharArray();
        int numOfUniqueChars = 0;
        for (char curChar : characters) {
            if(charSet[curChar] == 0) {
                ++numOfUniqueChars;
            }
            ++charSet[curChar];     // Is char being implicitly converted to int/byte here?
        }
        return numOfUniqueChars;
    }

提前感谢您抽出时间查看我的查询。

char是整型。每个 char 都有一个介于 02^16-1 之间的数值。

因此,当您使用 char 作为数组的索引时,会使用该数值,因为数组总是有一个 int 索引。

发生的转换称为 widening primitive converion