以下は for のソースhashCode()
ですString
:
public int hashCode()
{
int h = hash;
if (h == 0 && count > 0)
{
int off = offset;
char val[] = value;
int len = count;
for (int i = 0; i < len; i++)
{
h = 31*h + val[off++];
}
hash = h;
}
return h;
}
off
は 0 に初期化されoffset
ます (ソースのどこを見ても、各割り当てで 0 になりました)。次に、for
ループ内で、の代わりにval
via を介して反復されます。どうしてこれなの?そもそも使用する必要性を排除しないのはなぜですか? 存在するのにはそれなりの理由があると思います。洞察はありますか?off
i
i
offset
offset