可以在for循环的初始化部分返回语句吗?

时间:2015-09-19 13:30:04

标签: 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;x==1;x++)
    ;
}

2 个答案:

答案 0 :(得分:0)

JLS的相关部分是section 14.14.1

  

BasicForStatement:

     

$('#bookCleaningForm').submit(function() { // get the array of all the inputs var $inputs = $('#bookCleaningForm :input[type=text]'); // get an associative array of the values var values = {}; var allVAlues=''; $inputs.each(function() { values[this.name] = $(this).val(); allVAlues = values[this.name]; }); alert(allValues);//console.log(allValues); saveBoookCleaning(allVAlues); });

[ForInit]定义为:

  

ForInit:

     

for ( [ForInit] ; [Expression] ; [ForUpdate] ) Statement

     

StatementExpressionList

请注意,LocalVariableDeclaration不是允许的语句的一部分。

答案 1 :(得分:0)

当然你不能这样做!你一定听错了。 for循环的初始化可以包含变量声明或赋值语句,用逗号分隔,但不包含return语句。

退货声明根本没有任何意义!您打算在for循环的初始化部分编写初始化!很明显,您无法使用return初始化内容。因此,这是不允许的。

正如@Tunaki所说,JLS非常清楚地说明了这一点。而且我不认为你在编码时应该违反规则。例如,您不希望将Singleton的构造函数更改为public,尽管它仍然有效。在这个for循环的情况下,Java的创始人必须认为一些顽皮的人会在for循环初始化中编写一个返回值,因此它们限制了你可以在那里写的东西。

请记住,不要做那些毫无意义的事情。