当我运行这段代码时,我可以期待什么行为:
do while(testA) {
// do stuff
} while(testB);
它会像这样吗:
do {
while(testA) {
// do stuff
}
} while(testB);
或者:
if(testA) {
do {
// do stuff
} while(testA && testB);
}
还是完全出乎意料的事情?
我问这个问题是因为我觉得这很模棱两可,对于搜索这个主题的其他人来说,不是因为我懒得测试它。
最佳答案
它相当于你的第一个 block :
do {
while(testA) {
// do stuff
}
} while(testB);
Java grammar的相关部分解析时是:
DoStatement:
do Statement while ( Expression ) ;
Statement:
WhileStatement
WhileStatement:
while ( Expression ) Statement
Statement:
Block
Block:
{ BlockStatements_opt }
您可以看到 Java 编译器会将其解析为 do <WhileStatement> while ( Expression ) ;
.这是解析您编写的代码的唯一有效方法。
请记住,它没有任何特殊规则来解析此构造。由于编写 do-while 循环的不寻常方式,它最终会让人难以阅读。在正常使用中,do-while 始终写为 do { ... } while
带有显式花括号。
关于Java do while, while,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2434541/