Я просматривал некоторые из примитивных коллекций Java ( trove , fastutil , hppc ) и I ' Мы заметили закономерность, согласно которой переменные класса иногда объявляются как final
локальные переменные. Например:
public void forEach(IntIntProcedure p) {
final boolean[] used = this.used;
final int[] key = this.key;
final int[] value = this.value;
for (int i = 0; i < used.length; i++) {
if (used[i]) {
p.apply(key[i],value[i]);
}
}
}
Я провел несколько тестов, и оказалось, что это немного быстрее при этом, но почему? Я пытаюсь понять, что Java сделала бы по-другому, если бы первые три строки функции были закомментированы.
Примечание: это похоже на этот вопрос , но это было для c ++ и не адрес, почему они объявлены окончательными
.