Обычно вы инициализируете j в первом утверждении в цикле for (который здесь пуст), поскольку он является индексом цикла и обычно используется только внутри цикла. Кроме того, стандартный синтаксис для циклов Java для циклов - for(initialization; termination condition; increment)
, но язык только предусматривает, что существует три оператора (средний из которых является булевым выражением), поэтому вы можете иметь три пустых оператора for(;;)
, который создает бесконечный цикл, или вы можете добавить некоторые другой оператор там (за исключением среднего выражения, где ожидается булевское выражение), например for(System.out.println("I was supposed to initialize here"); false && true; logger.log("Nope."))
. Конечно, вы не должны этого делать, но это законно.
Примечание: Некоторые заявления было бы незаконным, если поставить на место третьего утверждения, а также, как и объявления переменных, так как она выполняется в конце каждой итерации (см this для более на законных основаниях синтаксиса цикла)
Мне нравится думать, для петель как стенография для общей формы петли в то время, когда вы хотите, чтобы петли несколько раз:
int i= 0; // Initialization
while (i< max){ // termination
// Do stuff
i++; // increment
}
, который является полезным для понимания того, что он делает с этими утверждениями.
это первый после 'for (' в вашем случае, ни один –
возможный дубликат [для цикла без объявления индекса] (http://stackoverflow.com/questions/8208503/for-loop-without-index-declaration) –
Вы, вероятно, найдете этот еще один нечетный в какой-то момент, если вы еще этого не сделали: 'for (;;)' – Voicu