Java return语句是否可以位于for循环的初始化部分?
我听说在for循环的初始化部分可以有任何有效的java语句 当我试图编译这段代码时,它给了我一个错误:表达式的开始是非法的。 虽然我期望出现无法访问的代码错误 可能的原因是什么 谢谢Java return语句是否可以位于for循环的初始化部分?,java,for-loop,Java,For Loop,我听说在for循环的初始化部分可以有任何有效的java语句 当我试图编译这段代码时,它给了我一个错误:表达式的开始是非法的。 虽然我期望出现无法访问的代码错误 可能的原因是什么 谢谢 class A { public static void main(String args[]){ int x=1; System.out.println("sds"); } public int m1() { int x=1; for(return 0
class A
{
public static void main(String args[]){
int x=1;
System.out.println("sds");
}
public int m1()
{
int x=1;
for(return 0;x==1;x++)
;
}
JLS的相关部分包括: 基本陈述:
for([ForInit];[Expression];[ForUpdate])语句
定义为:
ForInit:
StatementExpressionList
LocalVariableDeclaration
在哪里
语句表达式列表:
StatementExpression{,StatementExpression}
及
语句表达式:
作业
PreIncrementExpression
predecrementpression
增量后压缩
递减后压缩
MethodInvocation
ClassInstanceCreationExpression
请注意,
[ReturnStatement]
不是允许的语句的一部分。当然不能这样做!你一定是听错了。for循环的初始化可以包含变量声明或赋值语句(用逗号分隔),但不能包含返回语句
返回语句毫无意义!您打算在for循环的初始化部分写入初始化!显然,您不能用返回值初始化内容。因此,这是不允许的
正如@Tunaki所说,JLS非常清楚地说明了这一点。我认为你在编码时不应该违反规则。例如,您不希望将Singleton的构造函数更改为public,尽管它仍然有效。在这个for循环的例子中,Java的创始人一定认为一些淘气的人会在for循环初始化中写一个返回,所以他们限制了你可以在那里写什么
记住,不要做没有意义的事。你听错了。初始化部分要么是用逗号分隔的表达式,要么是变量声明(可能是同一类型的多个变量)。我想不出这样做的可能原因。“for循环的初始化可以包含变量声明或赋值语句…”和其他几种类型的语句,如图所示。也许与直觉相反,这包括对void
methods.hmmm的调用,void
方法也可以进行一些初始化{排除System.exit(0)
[:-)}(有点奇怪,但可能)