当对象被创建后,在JVMS内保存的对象的堆地址,然后通过0x666地址找到堆内的对象,那么对象的引用类型属性保存的到底是这个引用对象本身还是对象的地址呢?
那么来看下面的代码,首先这个Student类,定义了两个引用类型属性,但是注意由于String类型的特殊性并不能作为测试使用所以这里用int[]数组来作为测试用属性

接着看下方的main方法,创建Student对象st ,接着创建数组age[]
然后st.age=age[]
如果输出st.age.hashCode() 也就是st.age的哈希地址 与 age.hasCode()的哈希地址相等,
那么就说明此时对象在堆内的引用类型属性保存的仅仅是指向该引用对象在堆内的地址
但是只是刚赋完值后,也有可能在修改值后发生某些改变,那么继续测试
修改age[0]=10 st.age[1]=2
然后继续输出两个地址 发现依然相等则表明---在堆内的对象内的引用类型的成员属性保存的仅仅是该引用对象在堆内的地址


网友评论