отличается между назначениями завершения цикла - PullRequest
0 голосов
/ 11 августа 2011

в чем разница между следующими 2 циклами

for(int i = 0, n = array.length; i < n; i++)
    //do something

for(int i = 0; i < array.length; i++)
    //do something

вычисляет ли цикл длину массива на каждой итерации во втором цикле?

Ответы [ 2 ]

3 голосов
/ 11 августа 2011

Первая форма оценивает выражение array.length только один раз и запоминает его в дополнительной локальной переменной (n).В большинстве языков, с которыми я работал, в любом случае найти длину массива невероятно быстро, поэтому последняя форма предпочтительнее.

0 голосов
/ 11 августа 2011

Это полностью зависит от языка и структуры данных, с которыми мы здесь имеем дело. Похоже, array.length является переменной-членом, поэтому она просто возвращается и не рассчитывается, но может быть свойством и, следовательно, может, но, вероятно, не пересчитываться каждый раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...