public class Human {
final private String name;
private Object age;
public Human(String name, int age) {
this.name = name;
this.age = age;
}
public Object getAge() {
return age;
}
@Override
public String toString() {
return "name: " + name + ", age: " + age;
}
public static void main(String[] args) {
Human human = new Human("George", 40);
System.out.println(human);
Object age = human.getAge();
age = 50;
System.out.println(human);
}
}
На выходе получаю
name: George, age: 40
name: George, age: 40
Если age - это Object, то он должен передаваться по ссылке.
Когда я делаю Object age = human.getAge()
, то в переменную age
должна записываться ссылка на Object. Соответственно, Object age
и human.age
должны смотреть на один и тот же адрес памяти.
Почему, перезаписывая локальную переменную age
, в объекте human
остается старое значение age
?
Тут у вас путаница с контекстами выполнения. Переменная age внутри метода Main не имеет отношения к переменной внутри объекта. Вы действительно записываете в age новое значение, но human.age и Main#age имеют разные адреса в пямяти.
Java передает все по значению. https://javarush.ru/groups/posts/857-peredacha-parametrov-v-java
Виртуальный выделенный сервер (VDS) становится отличным выбором
Изучаю написание программы, для плеера url потока, для хоть какого-то понимания за основу взял open source code приложение(https://github
Использую Rx, обращаюсь в сеть и в запросе передаю параметр
Как с помощью jdb подключить дебаггер к удалённому приложению на сервере, чтобы иметь возможность чтения исходников?