При передаче объекта в качестве параметра методу ссылка должна копироваться. Тогда почему вывод 0 9 9
, а не 9 9 9
? Получается, s1
и s2
ссылаются на разные объекты?
public class Main {
public static void main(String[] args) {
Integer s = 0;
foo(s, s = 9);
System.out.println(s);
}
static void foo(Integer s1, Integer s2) {
System.out.println(s1);
System.out.println(s2);
}
}
Параметры вычисляются слева направо, и поэтому s1
и s2
ссылаются на разные объекты. Если вы напишите
foo(s = 9, s);
То получите 9 9 9
. Так как в этом случае операция =
выполнится перед вычислением второго параметра. Ваш код равнозначен (за исключением того, что никаких новых переменных нет):
Integer s = 0;
// "раскрыл скобки" для foo(s, s = 9);
Integer old_s = s;
s = 9;
foo(old_s, s);
// "раскрыл скобки"
System.out.println(s);
Это происходит потому, что вы - сначала отправляете в первый аргумент, а во втором вы переопределяете переменную на 9. Одну и туже переменную вы, можете переопределять неограниченное кол.-во раз, только в том случае, если она не final.
Integer i = 1;
i = i * 2;
i = i + i;
i-=1;
Добрый деньЕсть контроллер в котором есть метод поиска
Не могу найти ни один пример запроса Twitter Api androidЕсли кто может - предоставьте пример выполнения такого запроса в android
Как отловить события mousePressed и mouseReleased где в этот момент находится курсор, а потом получить объект над которым это событие происходит? Можно...
Получаю "Screen overlay detected, To change this permission setting", you first have to turn off the screen overlay from Settings > Apps" (на Samsung S7 Edge), после нажатия Allow в окне с permissions, на Samsung S6 такой...