undefined

Создание объектов

Java Syntax
2 уровень , 3 лекция
Открыта

— Это снова твоя любимая учительница. Раз у нас так быстро пошли дела, решила рассказать тебе, что такое объекты, и как с ними работать.

— Чтобы создать какой-нибудь объект, нужно написать имя типа (класс) этого объекта и ключевое слово new перед ним. Допустим, у нас есть класс «кот» – Cat, тогда:

Код Описание
Cat cat;
Объявляет ссылочную переменную с именем cat и типом Cat. Значение переменной cat – ссылка null.
new Cat();
Создаёт объект типа Cat.
Cat cat = new Cat();
Создаёт ссылочную переменную cat типа Cat.
Создаёт новый объект типа Cat. Присваивает в переменную cat ссылку на новосозданный объект.
Cat murzik = new Cat();
Cat vaska = new Cat();
Создаются два объекта, ссылки на которые присваиваются двум разным переменным соответственно.
Cat murzik = new Cat();
Cat vaska = new Cat();

vaska = murzik;
Создаются два объекта, ссылки на которые присваиваются двум разным переменным.

Затем, переменной vaska присваивается ссылка на объект, содержащийся в переменной murzik. Теперь обе переменных ссылаются на первый созданный объект.
(На второй больше никто не ссылается – второй объект считается мусором)

Cat murzik = new Cat();
Cat vaska = null;

vaska = murzik;

murzik = null;
Создаётся один объект типа Cat, ссылка на который заносится в первую переменную (murzik), вторая переменная (vaska) содержит пустую (нулевую) ссылку.

Обе переменных ссылаются на один объект.

Теперь только vaska ссылается на объект, но не murzik.

undefined
1
Задача
Java Syntax,  2 уровень,  3 лекция
Недоступна
Набираем код Ӏ Java Syntax: 2 уровень, 3 лекция
Внимание! Объявляется набор кода на JavaRush. Включите режим повышенной внимательности, расслабьте пальцы, читайте код и… набирайте его в соответствующем окошке. Набор кода — вовсе не бесполезное занятие, как может показаться на первый взгляд: благодаря ему новичок привыкает к синтаксису и запоминает его (современные IDE редко дают ему это сделать).

— А что будет, если просто создать объект и не присваивать его [ссылку] никакой переменной?

— Если просто создать объект и не присвоить его никакой переменной, то Java-машина создаст его и тут же объявит его мусором (неиспользуемым объектом). А через некоторое время удалит его в процессе «сборки мусора».

— А как мне уничтожить объект, если он мне больше не нужен?

— Никак. Как только не останется ни одной переменной, хранящей ссылки на данный объект, он будет помечен как мусор и убран: уничтожен Java-машиной при следующей «сборке мусора».

Пока есть хоть одна ссылка на объект, он считается живым и уничтожаться не будет. Если хочешь побыстрее уничтожить объект – обнули все ссылки на него: присвой всем переменным, ссылающимся на него, значение null.

— Понятно. Вроде и не сложно совсем после предыдущих уроков.

— Диего вчера сидел всю ночь и придумывал для тебя интересные задачи. Специально для тебя старался. У него отличное чувство юмора, кстати:

undefined
1
Задача
Java Syntax,  2 уровень,  3 лекция
Недоступна
Одного кота нам мало
Как известно, быстро только кошки родятся (если что, это пословица такая, а не домысел). Хотя и объекты создавать тоже можно быстро. Открываем маленькое общество любителей котиков: создадим два объекта типа Cat, и присвоим им имена. Помните, каждый кот — индивидуален, так что имена у них должны быть разные.
undefined
1
Задача
Java Syntax,  2 уровень,  3 лекция
Недоступна
Макс, Белла и Джек
Если вы откроете эту задачку, то обнаружите в ней уже созданный класс Dog, то есть «собака». Нам предстоит создать нескольких собак. Мы уже продумали их историю, знаем, как они выглядят и на какие клички откликаются… Но в контексте задачи нас интересует вот что: создайте три объекта типа Dog, а затем присвойте им имена “Max”, “Bella” и “Jack”.
undefined
1
Задача
Java Syntax,  2 уровень,  3 лекция
Недоступна
Необъективная реальность
Плохому танцору мешают ноги, а иному программисту мешает язык программирования. Городская легенда, распространённая среди молодых программистов, гласит: «Будешь плохо кодить, придет Java и съест твою память». Предлагаем вам вывести текст этой легенды в консоль. И не забывайте беречь память! Она не бесконечна.
Комментарии (600)
Чтобы просмотреть все комментарии или оставить свой,
перейдите в полную версию
Сергей Ляшенко 4 уровень, Харьков
24 февраля 2021
Вот он настоящий релакс программиста))), такие задачки) немного передохнули и вперед трудяги))
R 2 уровень, Алматы
24 февраля 2021
Вата. Подписался на бесплатный курс, а задачи "Premium". Смысла не вижу читать комиксы))) lol)))
hidden #2538705 3 уровень
23 февраля 2021
 
То легко, то сложно.
 
Kuksh 13 уровень
8 февраля 2021
Я решил задание с именами по другому, но мне не засчитало - видимо я не удалил сначала dog1... Хотя по сути задание на мой взгляд более верно ибо так понятней. Я сделал так: Dog max = new Dog(); max.name = "Max"; Dog bella = new Dog(); bella.name = "Bella"; Dog jack = new Dog(); jack.name = "Jack";
Леонид 7 уровень, Москва
12 декабря 2020
Бодренько идёт, продолжаем! 😁
Superneo 7 уровень
6 ноября 2020
Парни, а я правильно понял, что нельзя создать объект командой new, если у нас не будет еще и такого класса открытого? Так как, тогда нам не на что по сути будет ссылаться?
Никита 2 уровень, Новосибирск
29 октября 2020
Почему задачи в Лекции 2 можно решить, только прочитал лекцию 3?
Artem 2 уровень, Лесной
26 октября 2020
Cat murzik = new Cat(); Cat vaska = new Cat(); vaska = murzik; Создаются два объекта, ссылки на которые присваиваются двум разным переменным. Затем, переменной vaska присваивается ссылка на объект, содержащийся в переменной murzik. Теперь обе переменных ссылаются на первый созданный объект. (На второй больше никто не ссылается – второй объект считается мусором). А почему именно обе переменных ссылаются на первый созданный объект Cat murzik = new Cat(); //? По идее если васька стал мурзиком, то они должны ссылаться на второй созданный объект...
Дмитрий Бабайлов 2 уровень, Санкт-Петербург
7 октября 2020
Скажите зачем/ или как работает, сто через точку пишется переменная? напр. Dog dog1 = new Doh(); dog1.name..... Почему через точку. что это значит?
Тони 10 уровень, Москва
4 октября 2020
Почему: Значение переменной cat – ссылка null.