gpt4 book ai didi

java - 什么可以放在 Java for 循环的括号中?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:38:43 24 4
gpt4 key购买 nike

我的问题是关于 Java for声明,例如

for (int i = 0; i < 10; ++i) {/* stuff */}

我不明白的是我可以在括号中放入多少代码/什么样的代码(即在我的示例中我有 int i = 0; i < 10; ++i 的位置)- 我真的不明白用来描述它的语言这里:

http://java.sun.com/docs/books/jls/third_edition/html/statements.html#24588

基本上我的问题归结为要求对规范中的位进行翻译,如下所示:

对于初始化:声明表达式列表局部变量声明

编辑:哇。我想真正的答案是“学习阅读和理解 JLS 中使用的符号——它的使用是有原因的”。谢谢大家的回答。

最佳答案

StatementExpressionListLocalVariableDeclaration 都在页面的其他地方定义。我会将它们复制到这里:

StatementExpressionList:
StatementExpression
StatementExpressionList , StatementExpression

StatementExpression:
Assignment
PreIncrementExpression
PreDecrementExpression
PostIncrementExpression
PostDecrementExpression
MethodInvocation
ClassInstanceCreationExpression

LocalVariableDeclaration:
VariableModifiers Type VariableDeclarators

VariableDeclarators:
VariableDeclarator
VariableDeclarators , VariableDeclarator

VariableDeclarator:
VariableDeclaratorId
VariableDeclaratorId = VariableInitializer

VariableDeclaratorId:
Identifier
VariableDeclaratorId [ ]

VariableInitializer:
Expression
ArrayInitializer

进一步遵循语法没有多大意义;我希望它足够容易阅读。

这意味着您可以或者任意数量的StatementExpressions,用逗号分隔,或者一个LocalVariableDeclarationForInit 部分。 LocalVariableDeclaration 可以由任意数量的“variable = value”对组成,以逗号分隔,前面是它们的类型。

所以这是合法的:

for (int i = 0, j = 0, k = 0;;) { }

因为“int i = 0, j = 0, k = 0”是一个有效的 LocalVariableDeclaration。这是合法的:

int i = 0;
String str = "Hello";
for (str = "hi", i++, ++i, sayHello(), new MyClass();;) { }

因为初始化器中所有这些随机的东西都符合 StatementExpressions 的条件。

并且由于 StatementExpressionList 允许在 for 循环的更新部分中使用,因此这也是有效的:

int i = 0;
String str = "Hello";
for (;;str = "hi", i++, ++i, sayHello(), new MyClass()) { }

你开始明白了吗?

关于java - 什么可以放在 Java for 循环的括号中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1014667/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com