4

Just wondering if there is any computational difference between:

for(;condition;) {
    //task
}

and

while(condition) {
    //task
}
4
  • 6
    No................. Commented Mar 12, 2019 at 7:16
  • In both structures the Condition is tested one more time then the execution of body, so there is no computational difference. Commented Mar 12, 2019 at 7:22
  • Try compiling both of these, and looking at the byte code. Let us all know if you see any difference at all. Commented Mar 12, 2019 at 7:22
  • The only practical difference between that kind of for-loop, and a while-loop, is if you use continue. Commented Mar 12, 2019 at 8:05

2 Answers 2

10

There is no difference as in both the cases Java compiler generates the same byte code . If you look on the byte code when I used for loop:

  0: bipush        11
  2: istore_1
  3: goto          9
  6: iinc          1, -1
  9: iload_1
 10: bipush        10
 12: if_icmpgt     6
 15: return

The above byte code genearated for the code below :

    int a = 11;
    for (; a > 10;) {
        a--;
    }

And same byte code:

   Code:
      0: bipush        11
      2: istore_1
      3: goto          9
      6: iinc          1, -1
      9: iload_1
     10: bipush        10
     12: if_icmpgt     6
     15: return

Has generated by the compiler when I used while loop

    int a = 11;
    while (a > 10) {
        a--;
    }
Sign up to request clarification or add additional context in comments.

Comments

1

The only difference between for and while is the syntax. Java will compile them to the exactly same code so there's no computational difference. Here is an article in the matter.

2 Comments

Not sure if that article is the best one, next to that it doesn't really show if it compiles to exactly the same code. It shows only a sketchy benchmark.
You are right, Admin Bera's answer is a better proof.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.