Изучите спецификацию языка Java для the for
statement. Вы можете объявить и инициализировать любой тип переменной в цикле for
и даже объявить несколько переменных, если они все одинаковы. Соответствующие правила в грамматике являются:
BasicForStatement:
for (ForInitopt ; Expressionopt ; ForUpdateopt) Statement
ForInit:
StatementExpressionList
LocalVariableDeclaration
LocalVariableDeclaration:
VariableModifiersopt Type VariableDeclarators
VariableDeclarators:
VariableDeclarator
VariableDeclarators , VariableDeclarator
Это означает, что вы можете сделать одно из следующих действий, например,
for (; … ; …) // no variable declaration at all
for (int i; … ; …) // variable declaration with no initial value
for (int i=0; … ; …) // variable declaration with initial value
for (int i=0, j=1; … ; …) // multiple variables
for (final Iterator<T> it = …; … ; …) // final variable
Первый пример здесь показывает, что вам не нужны никакие переменные вообще , и как pointed out in the comments, вам не обязательно иметь ForUpdate
. Единственное ограничение состоит в том, что у вас должно быть выражение в середине, и оно должно быть логически выраженным выражением.
Как и в стороне, ForInit
также может быть StatementExpressionList
, что означает, что вместо объявления и инициализации переменных вы также можете просто выполнить некоторые инструкции. Например, вы могли бы это сделать (но это не является особенно полезным пример):
for (System.out.println("beginning loop" ; … ; …)
Это может быть полезным, я полагаю, в моделировании do/while
цикла (если вы хотите, чтобы сделать это), если корпус - это простая функция:
for (method() ; condition ; method());
Пытались ли вы второй? Вы можете использовать любой тип, который вам нужен, ограничений нет .. вы даже можете инициализировать несколько переменных, если они все одинаковы. –
О, ничего себе, мне сказал мой лектор, что существуют ограничения на типы для петель ... не утруждал себя испытанием. Извините – user912
А, ну, ваш лектор должен взглянуть на [выражение 'for'] (http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls- 14.14) в спецификации языка Java. :) Существуют ограничения на то, что может быть там; либо несколько операторов, разделенных запятыми, либо объявление одной или нескольких переменных, а выражение условия должно быть логическим, но нет ограничений на типы переменных, которые могут быть объявлены. –