Java Character.getNumericvalue在char频率表中

Java Character.getNumericvalue在char频率表中,java,data-structures,hashtable,Java,Data Structures,Hashtable,这是一个计算每个字符在短语中出现次数的函数。但我不懂台词 int[] buildCharFreqTable(string phrase){ int[] tab = new int[Character.getNumericValue('z') - Character.getNumericValue('a') + 1]; for (char c : phrase.toCharArray()) { int x = getCharNumber(c); if

这是一个计算每个字符在短语中出现次数的函数。但我不懂台词

int[] buildCharFreqTable(string phrase){
    int[] tab = new int[Character.getNumericValue('z') - Character.getNumericValue('a') + 1];
    for (char c : phrase.toCharArray()) {
        int x = getCharNumber(c);
        if ( x != -1){
            tab[x]++;
        }
    }
    return tab;
}
这条线是做什么的?我们为什么要使用它

int[] tab = new int[Character.getNumericValue('z') - Character.getNumericValue('a') + 1];

提前感谢

此行试图创建一个数组,其中每个字符“a”到“z”都有一个索引。与Java用于其他字符的unicode不同,Java实际上使用相同的数字对所有英文字母变体进行编码A'和'A'都对应于10,'B'和'B'都对应于11,依此类推。这意味着要独立于大小写计算英语字母表中的每个字符,我们可以创建一个数组,每个字符有一个索引,并增加对应于我们看到的每个字符的索引值。线路

Character.getNumericValue('z') - Character.getNumericValue('a') + 1

创建一个新数组,其大小
值为'z'-值为'a'+1
。在java中,英文字符是按字母顺序给出的数字值,“a”是10,“z”是35。这使得数组的大小
35-10+1
或26,即英语字母表中的字母数。这只是创建该数组的一种更具适应性的方法,而不是简单地创建一个大小为26的数组。如果要计算一行中的字符“0”到“9”,而不是“a”和“z”,该怎么办?您可以简单地将“a”和“z”更改为“0”和“9”,或者将它们作为变量传递

没有必要使用这种方法。至于它的作用,你咨询过吗?
int[] tab = new int[Character.getNumericValue('z') - Character.getNumericValue('a') + 1];