Java: что будет выведено после выполнения этой программы, поясните, почему так.
public static void main(string[] args) {
int x[] = {4, 5, 6};
method(x);
system.out.printf("%d %d %d", x[0], x[1], x[2]);
}
public static void method(int[] arr) {
arr = new int[] {2, 3, 1};
}
}
m & 1 - это битовая конъюнкция. Результатом будет 1, если m нечетное, и 0, если m - четное (то есть, содержит или не содержит соответствующий разряд)
Выражение вида T ? X : Y, где T - логическое высказывание, принимает значение X, если T истинно, и Y, если T ложно.
Соответственно, i = (m & 1) == 1 ? m : m + 1 означает, что
если m нечетное, то i = m
если четное, i = m+1 (то есть, первое нечетное число после m)
i += 2 означает, что цикл идет с шагом, соответственно, рассматриваются только нечетные числа.