Адрес памяти переменных в Java

Смотрите на изображение ниже. Когда мы создаем объект в Java с new ключевое слово, мы получаем адрес памяти от ОС.

Когда мы пишем out.println(objName) мы видим "специальную" строку, как произведено. Мои вопросы:

  1. Что это производится?
  2. Если это - адрес памяти который данный ОС нам:

    a) Как я могу преобразовать эту строку в двоичный файл?

    b) Как я могу получить один адрес целочисленных переменных?

alt text

127
задан Abdalrhman Rafik 9 March 2019 в 13:45
поделиться

3 ответа

Это имя класса и System.identityHashCode(), разделенные символом '@'. То, что представляет собой хэш-код идентификации, зависит от реализации. Часто это начальный адрес памяти объекта, но объект может быть перемещен в памяти ВМ с течением времени. Так что (вкратце) на это нельзя полагаться.

Получение адресов памяти переменных бессмысленно в Java, так как JVM вольна реализовывать объекты и перемещать их так, как это кажется удобным (ваши объекты могут/будет перемещаться во время сбора мусора и т.д.)

Integer.toBinaryString() даст вам целое число в двоичном виде.

.
152
ответ дан 24 November 2019 в 00:46
поделиться

То, что вы получаете, это результат метода toString() класса Object или, точнее, identityHashCode(), как указал uzay95.

"Когда мы создаём объект в java с новым ключевым словом, мы получаем адрес памяти от операционной системы"

Важно понимать, что всё, что вы делаете в Java, обрабатывается виртуальной машиной Java. Именно JVM дает эту информацию. То, что на самом деле происходит в оперативной памяти операционной системы хоста, полностью зависит от реализации JRE.

.
1
ответ дан 24 November 2019 в 00:46
поделиться

Это выход реализации объекта "toString()". Если ваш класс переопределит toString(), он выведет что-то совершенно другое.

.
12
ответ дан 24 November 2019 в 00:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: