Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/46: Рейтинг темы: голосов - 46, средняя оценка - 4.93
 Аватар для boomtequila
0 / 0 / 0
Регистрация: 14.03.2012
Сообщений: 4

Ссылки на объект

05.09.2012, 05:16. Показов 8955. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Непонятна тема про переменные ссылочного типа. Например, при создании нового объекта.
ClassName p1 = new ClassName();
Что именно сейчас хранится в p1?
Как я могу визуально представить что такое ссылка вообще? Можно ли как то вывести содержимое p1? И что вообще происходит в данный момент с памятью?

И ещё. ClassName перед p1 указывается для того, чтобы задать тип переменной(?). Какова в этом логика? Почему это не следствие того что p1 является объекетом ClassName? Есть ли возможность создать переменную типа ClassName2 p1 = new ClassName(); ?
Подскажите какую комбинацию слов загуглить? Пробовал "ссылки в java", но непонимание осталось
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.09.2012, 05:16
Ответы с готовыми решениями:

Объект без ссылки
Если создать объект без ссылки, например в вызове метода, и в нем присутствует метод close(), то как его закрыть, или он закроется...

Ссылки на один и тот же объект в памяти
Возникла такая проблема, есть коллекция TreeSet, она хранит в себе объекты Date которые я достал из БД. Но мне надо с этими данными сделать...

Сравнение элемента массива и ссылки на объект
public boolean remove(Task task) { //Ранее есть созданный массив который хранит элементы типа Task //массив создается так: Task...

10
130 / 117 / 30
Регистрация: 14.11.2010
Сообщений: 707
05.09.2012, 08:56
Цитата Сообщение от boomtequila Посмотреть сообщение
ClassName p1 = new ClassName();
Что именно сейчас хранится в p1?
хранится ссылка на новый объект типа ClassName, под который выделен кусок памяти, ссылка как раз содержит в себе адрес этого куска памяти

Цитата Сообщение от boomtequila Посмотреть сообщение
Есть ли возможность создать переменную типа ClassName2 p1 = new ClassName(); ?
есть, читайте наследование

Цитата Сообщение от boomtequila Посмотреть сообщение
Подскажите какую комбинацию слов загуглить? Пробовал "ссылки в java", но непонимание осталось
почитайте и , ну и гугл по запросу "ссылки в java" выдает нормальный результат
1
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
05.09.2012, 10:13
Цитата Сообщение от boomtequila Посмотреть сообщение
Почему это не следствие того что p1 является объекетом ClassName?
потому что в Java всё является наследником класса Object и чтобы увеличить зону видимости (чтобы стали видны паблик методы и проперти класса) нужно указать его класс, иначе будут видны только методы класса Object.
1
 Аватар для boomtequila
0 / 0 / 0
Регистрация: 14.03.2012
Сообщений: 4
05.09.2012, 13:02  [ТС]
Цитата Сообщение от blackbanny Посмотреть сообщение
хранится ссылка на новый объект типа ClassName, под который выделен кусок памяти, ссылка как раз содержит в себе адрес этого куска памяти
А есть ли возможность, например, вывести этот адрес на экран? Прощупать, так сказать.
0
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
05.09.2012, 13:09
Цитата Сообщение от boomtequila Посмотреть сообщение
А есть ли возможность, например, вывести этот адрес на экран?
метод toString(), если он, конечно, не переопределен.
1
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
05.09.2012, 13:35
все непонятки из-за того, что слово handle взял кто-то и перевел как ссылка. а это - "две большие разницы". перевели бы хорошим русским словом хэндл, (как это сделали с файлом, тэгом, шопом и многими другими), и было бы меньше непоняток.
хэндл - это не обязательно адрес памяти. это "элемент доступа" к объекту. понятно, что new привел к созданию объекта, естественно, при этом память выделилась, но хэндл объекта не содержит непосредственно адрес объекта. он - что-то, посредством чего можно работать с объектом, являющимся таким типом.
1
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
05.09.2012, 15:14
Цитата Сообщение от aleksandy Посмотреть сообщение
метод toString(), если он, конечно, не переопределен.
А если переопределен - System.identityHashCode(Object) вернет то же число, что фигурирует в toString()
1
 Аватар для boomtequila
0 / 0 / 0
Регистрация: 14.03.2012
Сообщений: 4
06.09.2012, 02:55  [ТС]
Цитата Сообщение от blackbanny Посмотреть сообщение
хранится ссылка на новый объект типа ClassName, под который выделен кусок памяти, ссылка как раз содержит в себе адрес этого куска памяти
И так, ссылка содержит адрес памяти, в которой находится объект. В моём понимании есть именованая область памяти(ClassName p1) в которой хранится адрес другой области памяти, в которой уже сам объект. Тогда становится непонятным, почему так? Почему нельзя хранить в памяти не ссылку, а сам объект сразу?
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
06.09.2012, 10:02
Это сделано для гарбаж коллектора, ссылки лежат в статическом контексте, а объекты в хипе, и если из статического контекста удалена ссылка, то можно удалять объект
1
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
06.09.2012, 11:24
Цитата Сообщение от boomtequila Посмотреть сообщение
И так, ссылка содержит адрес памяти, в которой находится объект. В моём понимании есть именованая область памяти(ClassName p1) в которой хранится адрес другой области памяти, в которой уже сам объект. Тогда становится непонятным, почему так? Почему нельзя хранить в памяти не ссылку, а сам объект сразу?
А объект и хранится в памяти. В куче. Просто ссылки на него могут быть из множества разных мест. Если Вы будете использовать сами объекты вместо ссылок на них - придется их клонировать, соответственно, изменения в одном не будут отражаться в другом, повышенный расход памяти и т.д.

А если есть ссылки, да еще и их счетчик - как только последняя ссылка пропала, объект можно убирать как мусор.
1
 Аватар для boomtequila
0 / 0 / 0
Регистрация: 14.03.2012
Сообщений: 4
06.09.2012, 13:34  [ТС]
Спасибо, господа, ситуация проясняется.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.09.2012, 13:34
Помогаю со студенческими работами здесь

Если объект добавлять в 2 контейнера, то в них будет ссылка или новый объект?
Есть объект - obj. Последовательно добавляю его в два контейнера container1.add(obj); container2.add(obj); Если я удалю...

Есть ссылка на объект. Можно ли изменить объект, который хранится по этому адресу?
Есть ссылка на объект. Можно ли изменить объект, который хранится по этому адресу? Т.е. не меняя саму ссылку, изменить тип объекта, на...

Способ определить, что объект obj1 используется как объект синхронизации в текущий момент
Привет. Существует ли способ определить, что объект obj1 используется как объект синхронизации в текущий момент? т.е. есть конструкция...

Передача ссылки на объект
Есть работающий код рисования круга. Он в обработчике MouseUP объекта, на котором рисуем. private void...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru