最近,我在一个项目中看到了很多类似的代码块,这些代码块的编写方式如下:

String usedAlphabet = "x3w4tnu34urgbgierg";

byte c = // (something initialized earlier)

return usedAlphabet[(int)(c / 16)];


现在,访问相应数组时使用(int)强制转换的原因可能是什么?

在我看来,这似乎是多余的,但我可能错了,或者我可能缺少有关类型转换机制的知识。

最佳答案

如您所知,演员表是多余的。它有助于提高可读性吗?也许取决于上下文。可以做些什么来真正帮助这种“非显而易见的数组索引”的可读性?我告诉你的好名字(当然,作者应该找到能表达他意图的正确名字,我在这里已经编好了这些名字):

int sectionSize = 16;

String usedAlphabet = "x3w4tnu34urgbgierg";
byte sectionIndex = // (something initialized earlier)

int alphabetIndex = sectionIndex / sectionSize;
return usedAlphabet[alphabetIndex]; // not so puzzling anymore

07-24 09:30