what behaviour can I expect when I run this code:
do while(testA) {
// do stuff
} while(testB);
Will it behave like:
do {
while(testA) {
// do stuff
}
} while(testB);
Or:
if(testA) {
do {
// do stuff
} while(testA && testB);
}
Or something totally unexpected?
I ask this question because I think this is quite ambiguous, and for other people searching on this topic, not because I am lazy to test it out.
It is equivalent to your first block:
The relevant parts of the Java grammar when parsing this are:
You can see that the Java compiler will parse this as
do <WhileStatement> while ( Expression ) ;. That’s the only valid way to parse the code that you wrote.Keep in mind that it doesn’t have any special rule to parse this construct. It just ends up being confusing for a human to read due to the unusual way the do-while loop is written. In normal usage do-while is always written as
do { ... } whilewith explicit curly braces.