Я точно не знаю ответа, но думаю, что нет.Компилятор Java, если не считать специального массива ArrayList, не может знать, что вызываемые вами функции не будут мутировать, и что в результате вызов size () должен возвращать то же значение.Поэтому я считаю крайне маловероятным, что компилятор Java будет учитывать повторяющиеся вызовы size () и сохранять их во временном значении.Если вам нужен этот уровень оптимизации, вы должны сами хранить значение в локальной переменной.В противном случае, да, вы будете платить за накладные расходы при вызове функции, связанные с вызовом метода size ().Обратите внимание, что метод size () для ArrayList равен O (1) (хотя накладные расходы на вызов функции довольно большие).Лично я бы исключил любые вызовы size () из циклов и вручную сохранил бы их в локальном, где это применимо.
Редактировать Даже если такая оптимизация не может быть выполнена компилятором Java, было точно указано, что JIT может встроить реализацию ArrayList.size () так, что она стоит столько же, сколько и доступ к полю, без каких-либо дополнительных затрат на вызов методаТаким образом, в действительности затраты незначительны, хотя вы все равно могли бы немного сэкономить, сохранив вручную во временном хранилище (что может исключить поиск в памяти и вместо этого подать переменную из регистра ЦП).