我听说在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++)
;
}
答案 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循环初始化中编写一个返回值,因此它们限制了你可以在那里写的东西。
请记住,不要做那些毫无意义的事情。