Осенью я преподаю продвинутый курс Java. Я знаю, что три раздела оператора for, разделенных точкой с запятой, могут иметь несколько вложенных операторов, например следующие.
for(int x = 0, y = 0; x < 10 && y < 20; x+=1, y+=2) {
System.out.println(x + " " + y);
}
Однако я не могу найти ресурс, который бы подробно описал, что может быть в каждом из предложений инициализации, завершения и приращения соответственно.
Официальный java документации, не дает подробностей, как и многочисленные веб-сайты, которые я искал.
Я вывел некоторые правила за эти годы, но я хотел бы что-то более официальное, чем мои дедукции, когда я преподаю.
Например, следующие два компилируются:
int x = 0;
for(System.out.println("initializer"); (x++)<10; System.out.println("increment " + x)) {}
и
int x = 0;
boolean cont = true;
for(System.out.println("initializer"); cont; System.out.println("increment " + x),cont=(x++)<10) {}
, но следующее не выполняется:
for(int x=0,boolean cont=true; cont; System.out.println("increment " + x),cont=(x++)<10) {}
У меня обоснованные предположения относительно того, почему первые два компилируются, а последний - нет, но я не могу дать окончательных правил для каждого предложения.