从对象引用出发:
一个对象引用可以指向零个或一个对象
从对象出发:
一个对象可以被一个或多个对象引用
下面程序中我只是感觉对象引用=对象引用,求出路
// 一个对象被多个对象引用同时引用。
Demo demo1,demo2,demo3;//创建多个对象引用
demo1=new Demo();
demo2=demo1;
demo3=demo2;//创建对象,并被多个对象引用指向
}
首先,每个对象只有一个地址值,new Demo()是创建了一个对象,demo1是这个对象的地址值,用来找到这个对象,demo2=demo1是吧new Demo()这个对象的地址值由demo1改为了demo2,后面的demo3=demo2也是只改变了对象的地址值,对象本身的空间大小都没有变化,变的,是这个对象的地址值,也就是c里面所谓的指针。
你要弄清除这个,首先你得弄清楚java虚拟机内存,弄清楚变量(对象引用)和对象是如何存储的,对象引用是存储在栈内存中,而对象是存储在堆内存中。
Demo demo1,demo2,demo3;//创建多个对象引用,都存储在栈中
demo1=new Demo();//创建一个Demo对象,存储在堆中,并将demo1指向这个对象,相当于加了一个链
demo2=demo1;//demo2与demo1一样,都指向堆中Demo对象
demo3=demo2;//demo3与demo2一样,都指向堆中Demo对象
这段代码你只创建了一个对象,被三个对象引用所指向
首先你要明确栈堆,其实代码写完是这样的
|____________| |____________| |____________| |____________|
|___demo1_|----> |_____Demo()_______| |_____demo1___|-------> |___Demo()_________|
|____________| |____________| 再创建 |______demo2__|------| 一起指向 |____________|
|____________| |____________| |______demo3__|_____| |____________|
|____________| |____________| |____________| |____________|