日期:2014-05-20  浏览次数:20962 次

java的对象的引用是指java对象在堆中的内存地址么?
RT..

------解决方案--------------------
不是,对象的引用是放在栈里面的。对象本身是放到堆里面的。
------解决方案--------------------
貌似对象的引用就是那个变量名吧 他是放在栈内存里,而那个对象放在堆内存了。。
例如:
class Person
{
Person()
{
System.out.println();
}
}
class Demo
{
public static void main(String[] args)
{
Person p=new Person();//这个变量名p就是你说的那个对象的引用。new Person()就是新生成的对象
}
}


我也是新手 也搞不大明白 你借鉴一下嘛 肯定还有高手告诉你的 然后你在理解一下吧
------解决方案--------------------
是的,引用变量在栈中,它的值如果不是null的话就是一个堆中对象的地址
------解决方案--------------------
是啊,不过是虚拟地址。。
------解决方案--------------------
是的,对象的引用放在栈中,对象放在堆中,引用指向堆中的地址,来确定其所对应的对象。
------解决方案--------------------
探讨
是的,对象的引用放在栈中,对象放在堆中,引用指向堆中的地址,来确定其所对应的对象。

------解决方案--------------------
不知道你说的虚拟地址是什么意思,表示地址的方法应该是相对地址+偏移量算出物理地址
探讨

其实现在的问题是:堆中的地址是虚拟地址还是物理内存地址?

------解决方案--------------------
引用不是内存地址,是对象的别名,在jvm中有着某种映射关系,将应用与内存地址一一对应起来
------解决方案--------------------
应该是虚拟内存地址,因为JAVA堆并不要求物理内存地址要连续,是要使逻辑连续的即可,所以我想应该这部分的内存地址都应该由JVM做过处理的吧。