Java :创建对象时 每一个new出来的对象给给对象变量赋值时 都是一个新地址吗?(如图)

图片说明

每一个new出来的对象给给对象变量赋值时 都是一个新地址吗?
我肯定回答你:是的,每次都是一个新地址。

在这里有点需要注意,对象是不是一样有两种比较方式,一种就是是不是同一个,一种就是是不是值相等。

是不是同一个,就是==号比较,例如:你有100块,我有100块,比较的两个对象是同一个物体 你用==比较就是false
== 比较的是内存中的地址是不是相同的,也就是你问的a与b的地址是不是相同,很显然不同,因为他们不是同一个。

另外一种就是是不是值相同,例如你的键盘ikbc104c这个型号的,你同事也有一个ikbc104c型号的,
这两个是相同的,比较的值是不是相同的。就像你有100块,我有100块,我们的钱是一样多的。
这个使用equalse比较的,如果不覆盖,就是调用Object的equalse方法,比较内存是不是同一个地址。

是,每次的地址一般情况下都不相同。

每个对象在被实例化时,都会在堆中分配新的地址。如上面代码,你可以把两次实例化后的内存地址打印出来,可以很明确的看出是两个不同的地址。

一般情况是每次都会在堆上创建新对象,所以a,b指向的地址不同。
一些情况为了性能,会有对象池,通过工厂模式等来实现

http://www.cnblogs.com/aurawing/articles/1887029.html

你那两个Y不在同一个类中,分配的空间不在地址不一样的 Y被new出来后 你可以实用里面的方法

肯定不是同一个,你也可以直接打印出来,或者 用“==”比较一下