我正在分析一个开源游戏代码,我不理解setDefaultSpecialChars()方法和setDefaultSmallAlphabet()。这些陈述fontCharTable[':']=1 + indexOf_Point;
和fontCharTable['a'+i] = indexOf_a + i;
对我来说是新的。
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class GFont {
public int[] fontCharTable = new int[256];
public void setFontCharTableDefaults(boolean specialChars) {
setDefaultSmallAlphabet(0);
setDefaultBigAlphabet(0);
setDefaultDigits(27);
if (specialChars) {
setDefaultSpecialChars(37);
}
}
public void setDefaultSpecialChars(int indexOf_Point) {
fontCharTable['.']=0 + indexOf_Point;
fontCharTable[':']=1 + indexOf_Point;
fontCharTable[',']=2 + indexOf_Point;
fontCharTable[';']=3 + indexOf_Point;
fontCharTable['?']=4 + indexOf_Point;
fontCharTable['!']=5 + indexOf_Point;
fontCharTable['(']=6 + indexOf_Point;
fontCharTable[')']=7 + indexOf_Point;
fontCharTable['+']=8 + indexOf_Point;
fontCharTable['-']=9 + indexOf_Point;
fontCharTable['*']=10 + indexOf_Point;
fontCharTable['/']=11 + indexOf_Point;
fontCharTable['=']=12 + indexOf_Point;
fontCharTable['\'']=13 + indexOf_Point;
fontCharTable['_']=14 + indexOf_Point;
fontCharTable['\\']=15 + indexOf_Point;
fontCharTable['#']=16 + indexOf_Point;
fontCharTable['[']=17 + indexOf_Point;
fontCharTable[']']=18 + indexOf_Point;
fontCharTable['@']=19 + indexOf_Point;
fontCharTable['ä']=20 + indexOf_Point;
fontCharTable['ö']=21 + indexOf_Point;
fontCharTable['ü']=22 + indexOf_Point;
fontCharTable['Ä']=fontCharTable['ä'];
fontCharTable['Ö']=fontCharTable['ö'];
fontCharTable['Ü']=fontCharTable['ü'];
}
public void setDefaultSmallAlphabet(int indexOf_a) {
for (i=0; i<26; i++) {
fontCharTable['a'+i] = indexOf_a + i;
}
}
}
答案 0 :(得分:2)
它只是一个普通的数组元素赋值表达式 - 但使用从char
到int
的隐式转换。所以拿这个:
fontCharTable['+']=8 + indexOf_Point;
现在将其视为:
char indexAsChar = '+';
int indexAsInt = indexAsChar; // Use implicit conversion
fontCharTable[indexAsInt] = 8 + indexOf_Point;
现在更清楚了吗?
同样如此:
for (i=0; i<26; i++) {
fontCharTable['a'+i] = indexOf_a + i;
}
可以写成:
for (i=0; i<26; i++) {
int a = 'a';
int index = a + i'
fontCharTable[index] = indexOf_a + i;
}
答案 1 :(得分:1)
它们可能看起来很奇怪,但它们所做的只是使用字符作为索引。
如果你想看看他们在做什么,你可以尝试通过调试器中的代码来踩踏。