对于循环括号

时间:2015-04-20 20:02:05

标签: java for-loop

public class MultithreadingFour {
        public static void main(String args[]){
                A obj = new A();
                Task task= new Task();
                for(int i=0; i<10; i++)
                        Thread t= obj.newThread(task);
        }
}

编译错误:此行有多个标记

Syntax error, insert ";" to complete Statement
  t cannot be resolved to a variable
Syntax error, insert "AssignmentOperator Expression" to complete Assignment
Syntax error, insert ":: IdentifierOrNew" to complete ReferenceExpression
  Thread cannot be resolved to a variable

,而

public class MultithreadingFour {
        public static void main(String args[]){
                A obj = new A();
                Task task= new Task();
                for(int i=0; i<10; i++){
                        Thread t= obj.newThread(task);
                }
        }
}

成功编译(请注意for循环中添加的花括号)。

2 个答案:

答案 0 :(得分:13)

在Java中,变量声明Thread t = ...在技术上不是语句,而块{ ... }是。 for ( ... )后面的内容必须是声明。

答案 1 :(得分:8)

“for statement”的正文必须是“声明”。

局部变量声明不是声明。因此,您不能将局部变量声明作为“for语句”的“声明”。

以下是for循环的允许语法:

  

BasicForStatement:       for(ForInitopt; Expressionopt; ForUpdateopt)Statement

     

ForStatementNoShortIf:       for(ForInitopt; Expressionopt; ForUpdateopt)StatementNoShortIf

您可能需要阅读JLS 14. Blocks and Statements以获取更多信息。

请注意,在单行for循环中允许变量声明是不合逻辑的,因为它只能在循环范围内使用,因为它只能在循环范围内使用。