Есть ли вычислительная разница между циклами while и for? - PullRequest
4 голосов
/ 12 марта 2019

Просто интересно, есть ли какая-нибудь вычислительная разница между:

for(;condition;) {
    //task
}

и

while(condition) {
    //task
}

Ответы [ 2 ]

9 голосов
/ 12 марта 2019

Существует no difference, как в обоих случаях Java compiler generates the same byte code. Если вы посмотрите на байт-код, когда я использовал 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

Вышеуказанный байт-код, сгенерированный для кода ниже:

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

И тот же байт-код:

   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

Сгенерирован компилятором, когда я использовал while loop

    int a = 11;
    while (a > 10) {
        a--;
    }
1 голос
/ 12 марта 2019

Единственная разница между for и while заключается в синтаксисе.Java скомпилирует их в один и тот же код, поэтому нет никакой вычислительной разницы. Вот статья по этому вопросу .

...