Using this example for testing different for loops:
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
public class ForLoopPerformanceTest {
private static List<Integer> list = new ArrayList<>();
private static long startTime;
private static long endTime;
static {
    for (int i = 0; i < 1_00_00_000; i++) {
        list.add(i);
    }
}
@SuppressWarnings("unused")
public static void main(String[] args) {
    // Type 1
    startTime = Calendar.getInstance().getTimeInMillis();
    for (Integer i : list) {
        //
    }
    endTime = Calendar.getInstance().getTimeInMillis();
    System.out.println("For each loop :: " + (endTime - startTime) + " ms");
    // Type 2
    startTime = Calendar.getInstance().getTimeInMillis();
    for (int j = 0; j < list.size(); j++) {
        //
    }
    endTime = Calendar.getInstance().getTimeInMillis();
    System.out.println("Using collection.size() :: " + (endTime - startTime) + " ms");
    // Type 3
    startTime = Calendar.getInstance().getTimeInMillis();
    int size = list.size();
    for (int j = 0; j < size; j++) {
        // System.out.println(j);
    }
    endTime = Calendar.getInstance().getTimeInMillis();
    System.out.println(
            "Using [int size = list.size(); int j = 0; j < size ; j++] :: " + (endTime - startTime) + " ms");
    // Type 4
    startTime = Calendar.getInstance().getTimeInMillis();
    for (int j = list.size(); j > size; j--) {
        // System.out.println(j);
    }
    endTime = Calendar.getInstance().getTimeInMillis();
    System.out.println("Using [int j = list.size(); j > size ; j--] :: " + (endTime - startTime) + " ms");
}
}
The Results
For each loop :: 108 ms
Using collection.size() :: 39 ms
Using [int size = list.size(); int j = 0; j < size ; j++] :: 4 ms
Using [int j = list.size(); j > size ; j--] :: 0 ms