使用“ char”和“ int”为数组建立索引,有什么区别?

时间:2019-09-18 16:57:22

标签: java arrays char int

在“破解编码面试”中,有一个问题希望您检查两个字符串是否相互置换。看完代码后,我很困惑为什么作者的示例实现使用第一个字符串的“ char”值索引数组,然后在获取第二个字符串的char值但将其转换为int,然后再访问相同的字符串数组。这是下面的代码片段。您可以看到,在第一个for循环中,它使用char值,但在第二个for循环中,它将char转换为int,然后再进行访问。

    boolean isPermutation(String str1, String str2) {
    if (str1.length() != str2.length()) {
        return false;
    }

    int[] charCount = new int[128];

    char[] s_array = str1.toCharArray();
    for (char c : s_array) {
        charCount[c]++;
    }

    for (int i = 0; i < str2.length(); i++) {
        int c = (int) str2.charAt(i);
        charCount[c]--;
        if (charCount[c] < 0) {
            return false;
        }
    }
    return true;
}

1 个答案:

答案 0 :(得分:4)

使用char索引到数组与使用int索引到数组几乎完全一样。来自the JLS

  

数组必须由int值索引; short,byte或char值也可以用作索引值,因为它们经过一元数值提升(第5.6.1节)并成为int值。

因此,当您使用char索引到数组时,首先将char提升为其对应的int值,然后将其用于索引到数组中。从用户的角度来看,最终结果是使用char的行为与使用int的行为相同。