Объект существует пока есть ссылка?
По-моему, одно из первых, чему учат java-новичков, это то, что объект существует, пока существует ссылочная переменная указывающая на него. А потом придет сборщик мусора и т.д. Тогда почему работает подобный код? Ведь ссылок нет. Как живут объекты new Cat()?
static class Cat{}
List<Cat> list = new ArrayList<>(10);
for (int i = 0; i < 10; i++) {
list.add(new Cat());
}
for (Cat cat : list) {
System.out.println(cat);
}
Ответы (1 шт):
Оператор new создает экземпляр указанного класса и возвращает ссылку на вновь созданный объект.
Т.е. когды Вы пишете строку list.add(new Cat());, вы добавляете в list ссылку на новый объект класса Cat.
А в строке for (Cat cat : list) идёт считывание по очереди ссылок на объекты из списка list во временный объект cat
А объект действительно существует, только пока существует ссылочная переменная указывающая на него. Т.е. если выполнить list.remove(0);, то ссылка на нулевой элемент списка будет утеряна, и можно будет сказать, что этот нулевой объект перестанет существовать.