Pytania w tym artykule pojawiły się podczas szkolenia Programowanie w języku Java realizowanego w dniach 26-30.06.2017 r.
Generalnie: tak. Jeśli tego nie zrobimy, kompilator javac wygeneruje taki bajtkod, w którym wywołanie metody getLength() (przykładowo) będzie wykonywane za każdym razem, łatwo to zaobserwować. Optymalizacje może wykonać już podczas wykonania maszyna wirtualna, ale ich efektów tak łatwo nie zobaczymy i nie możemy ich być pewni. Znanym faktem jest jedynie optymalizacja w przypadku, gdy limitem jest długość tablicy (t.length). Ja rekomenduję po pierwsze używanie pętli for-each, gdy tylko się da, a kiedy się nie da (i nie chodzi o długość tablicy), wyciąganie wyliczenia limitu przed pętlę i zapisanie go na zmiennej final; to na pewno nie pogorszy, a może podnieść wydajność.
W „gołym” JDBC takiego rozwiązania nie przewidziano. Jest ono natomiast dostępne w ramach JPA ("Hibernate") kiedy zapisuje się własne zapytania w JPQL.