JavaRush /Курсы /Java Syntax /Создание объектов

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

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.

2
Задача
Java Syntax Pro, 2 уровень, 3 лекция
Недоступна
«Я по объявлению…»
В методе main объяви переменные intValue, numericValue, size, number типа int. Присвой им разные значения. Используй одну команду для создания и инициализации переменных. Значениями могут быть любые целые числа.

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

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

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

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

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

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

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

Комментарии (619)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Александр Уровень 17
23 октября 2025

Cat cat; 
Объявляет ссылочную переменную с именем cat и типом Cat. 
Значение переменной cat – ссылка null.
Значение переменной отсутствует, т. к. переменная не проинициализирована.
vlafriday Уровень 1
1 февраля 2024
01.02.2024 check, мой уровень 2
Игорь Топоров Уровень 14
8 февраля 2022
Ребята, придумайте свою программу и на ней репетируйте. Я к примеру написал код, где применяются все знания полученные до этого урока. К примеру: Программа должна уметь создавать людей, создадим массив обьектов(как из примера с муравьями), но только на 100ячеек, далее реализуем цикл for, в котором вызывается имя перовго массива обьекта, и заносятся данные, фамилия, имя, отчество, ну, вот так: public class CreateObject { String surname; //Создали перменную surnmae типа String String name; //Имя String patronymic; //Отчество public static CreateObject[] humans = new CreateObject[100]; //Создали обьект humans, написали 100 ячеек массива public static void CreateObjectHumans() throws IOException { //Создали метод, слова: throws IOException нужны чтобы мы могли печатать что либо. BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); //Класс BufferedReader читает текст из потока ввода символов, короче пишите чтобы вы могли писать в консоль. int a = 1; //Я для своих целей сделал здесь переменную a = 1; for(int i = a; i < humans.length; i++); //Здесь вы можете просто написать int i = 0; Я для себя написал int i = a; a++; System.out.print("Фамилия - "); //Выводим надпись на экран String surnameInput = reader.readLine(); //Пишем фамилию humans[i].surname = surnameInput; //humans[ i ].surname, что это? Создаётся объект humans[ i ], под буквой i имеется в виду значение i, к примеру цикл начался с нуля, значит humans[0].surname = равно тому значению, что вы написали в консоль, Шереметьев к примеру, значит humans[0] имеет свою индивидуальную ссылку на перменную surname в которую и заносится фамилия(Шереметьев), иии теперь только данный обьект(humans[0].surname имеет свою фамилию). Ребята, вы не одни кому тяжело, всем тяжело, запомните: ЕСЛИ У ВАС НЕ ПОЛУЧАЕТСЯ, ЗНАЧИТ ВЫ ПОЛУЧАЕТЕ БОЛЬШЕ ИНФОРМАЦИИ, ЧЕМ У ТОГО У КОГО ПОЛУЧИЛОСЬ С ПЕРОВГО РАЗА, И ЭТО ВАМ ПОМОЖЕТ В БУДУЩЕМ
Ihor Уровень 13
29 марта 2022
не могу понять где вы нашли задачку с муравьями. У меня ее нигде нет, что в разделе Задач, что в разделе Курсов. Киньте ссылкой может, очень интересно посмотреть на этого муравьиного монстра (все обсуждают решения, а я не могу прожарить где да как -_- )
Qunjavi Уровень 10
4 августа 2022
Ihor Уровень 13
5 августа 2022
Да, со 2 уровня уже прошло много времени, я уже решал такую
Grom Уровень 41
27 июня 2025
пришли, плиз, ссылку на лекцию где есть эта задача
Pavel Mordovin Уровень 8
15 января 2022
Cat murzik = new Cat(); // Создаётся один объект типа Cat, ссылка на который заносится в первую переменную (murzik) Cat vaska = null; // вторая переменная (vaska) содержит пустую (нулевую) ссылку. vaska = murzik; // Обе переменных ссылаются на один объект. murzik = null; // Теперь только vaska ссылается на объект, но не murzik. Вопрос: если vaska ссылается на объект, но не murzik. Тогда какой? Null? Вроде null это пустая ссылка. Такие объекты же вроде помечаются компилятором, как мусор? Помогите)
Irina Уровень 20
21 января 2022
vaska = murzik; // Обе переменных ссылаются на один объект murzik = null; ссылку мурзика на объект обнулили, теперь у переменной "мурзик" нет связи со ссылкой, т.к. убрали эту связь. Но с васькой ничего не сделали, переменная как ссылалась на объект, так и ссылается сейчас.
Pavel Mordovin Уровень 8
26 января 2022
... то есть murzik = null; // Теперь только vaska ссылается на объект, но не murzik. Значит Cat vaska = new Cat(); Вроде так, да?
51_Drummer Уровень 25
28 января 2022
Вы, возможно запутались в котах. 1. Cat murzik = new Cat(); первый шаг - находим на улице живого кота и сразу даем ему имя Мурзик, всё - он реален и полноценен. 2. Cat vaska = null; планируем кагого-то кота, пока нереального назвать Васькой, приходит идея, что имя подходит котам, тем более помыли Мурзика и он не очень то и мурзат. 3. vaska = murzik; даём реальному коту Мурзику второе (запланированное) имя Васька, тот вроде на него получше откликается. 4. murzik = null; решаем, что Васька ему лучше подходит и вызываем людей в черном - они стирают ему память, что его ещё раньше звали Мурзиком.
Pavel Mordovin Уровень 8
2 февраля 2022
Спасибо!
p90x Уровень 8
31 января 2023
блестяще
AL Koriks Уровень 3
27 марта 2025
было бы гораздо более понятнее, если бы нам нарисовали ячейку памяти с адресом, и писали бы значение ссылки/переменной (тоесть адрес) после каждого присваивания :)
AL Koriks Уровень 3
27 марта 2025
камент к п.3 непонятен. Вроде ж наоборот? Ваське даем мурзика?
happyjane7 studio Уровень 2
20 сентября 2021

System.out.print("Курс гавно нет халявы.");

Курс гавно нет халявы.
VladimirPic Уровень 38
14 сентября 2021
Поменяйте, пожалуйста, сложность medium со второй задачи, не серьёзно
Netflex Уровень 4
4 июня 2021
Тяжело в учении легко в бою)) Так стоп но здесь же.......
Сергей Ляшенко Уровень 4
24 февраля 2021
Вот он настоящий релакс программиста))), такие задачки) немного передохнули и вперед трудяги))
R Уровень 2
24 февраля 2021
Вата. Подписался на бесплатный курс, а задачи "Premium". Смысла не вижу читать комиксы))) lol)))
Wiun Уровень 16
3 марта 2021
так купи премиум.
Тарас Шкарапут Уровень 17
13 марта 2021
Думаю, еще уровень-другой, и охотники за халявным образованием поотваливаются))
AL Koriks Уровень 3
27 марта 2025
они раньше были бесплатные,в 2020 годе, до ковида. А сейчас все подорожало, даже хлеб и молоко. Спасибо партии родной
hidden #2538705 Уровень 3
23 февраля 2021
 
То легко, то сложно.