Первый оригинал для цикла. Вы инициализируете переменную, устанавливаете условие завершения и предоставляете счетчик увеличения / уменьшения состояния (есть исключения, но это классический вариант)
Для этого
for (int i=0;i<myString.length;i++) {
System.out.println(myString[i]);
}
правильно.
Для Java 5 была предложена альтернатива. Любая вещь, которая реализует повторяемость, может быть поддержана. Это особенно приятно в коллекциях. Например, вы можете повторить список следующим образом:
List<String> list = ....load up with stuff
for (String string : list) {
System.out.println(string);
}
вместо
for (int i=0; i<list.size();i++) {
System.out.println(list.get(i));
}
Так что это действительно альтернативная запись. Любой элемент, который реализует Iterable (то есть может возвращать итератор), может быть записан таким образом.
То, что происходит за кулисами, примерно так: (более эффективно, но я пишу это явно)
Iterator<String> it = list.iterator();
while (it.hasNext()) {
String string=it.next();
System.out.println(string);
}
В конце концов, это просто синтаксический сахар, но довольно удобный.