根据反复认真听老毕同志的讲解,与我自己的实验,我是这样理解数组的。
1:java把一个数组当成一个对象来看待。数组和对象都是存放在堆内存中,所以每一个数组和每一个对象一样都有其相应的哈希值。
验证:楼主可以用打印语句分别打印数组与对象本身,可以看到他们各自的哈希值。
-------
2:它们的差别在于它们存放的数据结构不同,这可能也是数组作为对象的特殊之处。
很遗憾,这个我现在没有办法验证,只是简单的理论推导。
------
3:如果数组是对象类型的数组,其实它里面存放的也不是对象,而是堆内存中对应对象的引用。
验证:楼主可以new一个对象类型的数组,并将每一个数组元素都new一个对象,再分别打印数组本身与每一个元素本身,你会发现全是哈希值。
------
4:其实验证数组到底是不是对象,还有一个很简单的方法,那就是看它有没有上帝类Object中所有的同名方法。如果一个数组不具备object 类所有的同名方法,那只能说明我上面说的全是废话。
怎么样楼主,我说的很明白了吧,现在楼主应该能理解吧。
|