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
循环中添加的花括号)。
答案 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循环中允许变量声明是不合逻辑的,因为它只能在循环范围内使用,因为它只能在循环范围内使用。