Мы знаем, что переменная ссылки на объект содержит биты, которые представляют способ доступа к объекту.
Он не содержит сам объект, но содержит что-то вроде указателя или адреса.
Я просматривал книгу «Head-First Java» (2-е издание), и в книге написано (в главе 3, стр. 54), что
В Java мы действительно не знаем, что такое s внутри ссылочной переменной в Java? Мы знаем, что ссылочная переменная объекта содержит биты, которые представляют способ доступа к объекту. Он не содержит сам объект, но содержит что-то вроде указателя или адреса. Я собирался ...
Мы знаем, что переменная ссылки на объект содержит биты, которые представляют способ доступа к объекту.
Он не содержит сам объект, но содержит что-то вроде указателя или адреса.
Я просматривал книгу «Head-First Java» (2-е издание), и в книге написано (в главе 3, стр. 54), что
В Java мы действительно не знаем, что такое s внутри ссылочной переменной в Java? Мы знаем, что ссылочная переменная объекта содержит биты, которые представляют способ доступа к объекту. Он не содержит сам объект, но содержит что-то вроде указателя или адреса. Я собирался ...
Мы знаем, что переменная ссылки на объект содержит биты, которые представляют способ доступа к объекту.
Он не содержит сам объект, но содержит что-то вроде указателя или адреса.
Я просматривал книгу «Head-First Java» (2-е издание), и в книге написано (в главе 3, стр. 54), что
В Java мы действительно не знаем, что такое внутри ссылочной переменной. Мы делаем знаю, что бы это ни было, это представляет один и только один объект. И JVM знает, как использовать ссылка, чтобы добраться до объекта. -
Я хочу спросить:
- Содержит ли переменная ссылки на объект указатель, адрес или что?
- Как JVM интерпретирует это?
Это полностью зависит от JVM, чтобы определить, что входит в ссылку.
В простейшем случае это был бы просто указатель (то есть адрес). В более сложных случаях виртуальная машина может использовать разные представления в зависимости от ситуации - например, вы можете прочитать статью на «Сжатые ошибки в HotSpot» , чтобы узнать, как виртуальная машина HotSpot может избежать удвоения размера. ссылок в некоторых (но не во всех) местах при работе в качестве 64-битной виртуальной машины.
Важно то, что вы не должны ни знать, ни заботиться. Что касается вас, как программиста, это просто непрозрачный набор битов - его единственная цель - позволить вам добраться до рассматриваемого объекта (или идентифицировать нулевую ссылку).
Это зависит от JVM. Ссылка Java не гарантирует никакой семантики, кроме того, что вы можете получить доступ к объекту через нее. Sunacle может поступить иначе с IBM.
На практике часто это может быть какой-то указатель, хотя, возможно, и не напрямую на объект, поскольку он может быть перемещен сборщиком мусора.
Это полностью зависит от JVM. Это может быть адрес, указатель или что-то более сложное. У вас нет или необходимости в каких-либо более жестких гарантиях, чем тот факт, что вы можете получить объект, используя ссылку.
Именно JVM решает, как именно реализована ссылка.
Сказав это, любая «нормальная» реализация, вероятно, будет использовать либо прямой указатель, либо некоторую форму сжатого указателя по соображениям производительности. Я считаю, что это применимо ко всем текущим производственным JVM.