Какой цикл лучше?i <= array.length-1 или i <array.length - PullRequest
0 голосов
/ 21 октября 2018

Какой набор условий лучше использовать для циклов в Java?Я чувствую, что они будут делать то же самое, но я не уверен, что я не вижу что-то под капотом.

For (int i = 0; i

Для (int i = 0; i <= array.length-1; i ++) {} </p>

1 Ответ

0 голосов
/ 21 октября 2018

Тот факт, что вы обычно видите обе эти формы, наиболее вероятен из-за сочетания следующего:

  • Различия в предпочтениях стиля.Первая форма более краткая, и некоторые люди предпочитают ее по этой причине.

  • Различия в том, как программист думал о проблеме.

  • Различия в том, как программист думает, что читатель подумает о проблеме.(Как и «Я знаю, что индексы массивов переходят на array.length - 1, и я хочу, чтобы читатель увидел, что я учел это». )

  • A (вероятно, ошибочно) убеждение, что одна версия более эффективна, чем другая.


Я говорю «вероятно, ошибочно», поскольку единодушным является то, что современный JIT-компилятор Java, вероятно, оптимизируетдве формы в нативный код, который имеет эквивалентную производительность.Я констатирую это без предоставления доказательств 1 , потому что мне не известны какие-либо контр-доказательства 2 .

1 - Свидетельство может быть получено путем надлежащего тестирования производительности или тщательного анализа собственного кода, генерируемого JIT-компилятором.Изучение байт-кодов ничего не докажет.

2 - Если бы были контр-доказательства ... что это имело значение ... Я утверждаю, что это будет общеизвестно!

...