Мы можем попробовать.
int START = 3;
int score = 0;
boolean[] rounds = { true, false };
for (int i = 0; i < rounds.length; i++) {
score += (rounds[i]) ? i + START : 0;
System.out.format("i is %d, score is %d%n", i, score);
}
Вывод:
i is 0, score is 3
i is 1, score is 3
Так что первый раз через l oop i
равен 0 и rounds[i]
- это true
. В этом случае Java добавляет i
и START
для получения 3 и добавляет это к score
. Во второй раз i
равен 1
, а rounds[i]
равен false
, поэтому вместо него добавляется просто 0.
Запрос, о котором вы спрашиваете, добавляет значение к score
. Добавленное значение равно i + START
, если rounds[i]
может быть оценено как true, и 0, если это false
. Если i
и START
являются цифрами c, число будет добавлено. Если score
равно цифре c, добавление 0 обычно не имеет значения, поэтому вы можете думать о выражении как о добавлении значения только в том случае, если rounds[i]
является истинным.
, поэтому это оценка + = round [i] == i + start или == 0.
Нет, в выражении нет неявного ==
сравнения (как уже говорили другие, требуется, чтобы rounds[i]
было логическое значение, true или false).