大佬快进来,求解!!!对象与对象引用傻傻分不清楚!!!

从对象引用出发:
一个对象引用可以指向零个或一个对象

从对象出发:
一个对象可以被一个或多个对象引用

    下面程序中我只是感觉对象引用=对象引用,求出路
        // 一个对象被多个对象引用同时引用。
        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__|_____| |____________|
|____________| |____________| |____________| |____________|