public static void main(String[] args) {
Cat aCat = new Cat("Max");
Cat oldCat = aCat;
// передаем объект в функцию foo
foo(aCat);
// переменная aCat все еще будет указывать на кота "Max", после вызова foo()
aCat.getName().equals("Max");
// true
aCat.getName().equals("Nick");
// false
aCat == oldCat;
// true
}
public static void foo(Cat d) {
d.getName().equals("Max");
// true
// меняем d внутри foo(), d будет ссылаться на новый экземпляр Cat с именем "Nick"
d = new Cat("Nick");
d.getName().equals("Nick");
// true
}