В чем разница?И имеет ли это значение в больших циклах? - PullRequest
0 голосов
/ 31 января 2019

Мне было интересно, есть ли сложность и разница во времени при выполнении этих двух операций:

1)

int sum = 0;
for (int i = 0; i < 1000000; i++) {
    sum = sum + i;
}

2)

int sum = 0;
for (int i = 0; i < 1000000; i++) {
    sum += i;
}

или, возможно,Представьте, что проблема состоит в том, чтобы быть большими числами / данными, это всего лишь пример.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Эти варианты одинаковы с точки зрения производительности (оба будут как iadd инструкция в байт-коде Java)

Но sum += 1 заменено на sum = (int) (sum + 1) И у него есть отличия длятипа byte или short для компиляции Например, этот код будет скомпилирован

byte i = 0;
for(int j = 0; j < 10; j++) {
    i += j; //i = (byte) (i + j)
}

, но вы получите ошибку компиляции для кода

byte i = 0;
for(int j = 0; j < 10; j++) {
    i = i + j;
}
0 голосов
/ 31 января 2019

Существует разница в приоритете, составное назначение sum += i является менее основным, чем назначение и сложение sum = i + 1.Инкремент i++ еще более первичен.

для получения дополнительной информации: приоритет оператора

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...