首页 > 解决方案 > 如何将字符数组与布尔值进行比较

问题描述

我不太确定为什么这段涉及字符数组的代码有意义?

String str1 = "Hello"
int[] charSet = new int[128];
char[] chars = str1.toCharArray();
    for (char c : chars) { // count number of each char in s.
        if (charSet[c] == 0)++charSet[c];
    }

我的问题是如何将 char 变量作为 charSet 数组的索引并将其与 0 进行比较?

标签: javaarrayschar

解决方案


Achar是无符号的 16 位数值类型,int当用作数组索引时将被扩展。

charSet[c]是隐含的charSet[(int) c]

请注意,如果字符串中包含非 ASCII 字符,则代码将失败,因为只有ASCII字符在 Unicode 代码点范围 0-127 中。任何其他 Unicode 字符都会导致ArrayIndexOutOfBoundsException.


推荐阅读