比如,为什么A a不能指向一个B对象呢?小白,求不打脸= =
下面是我用Boy和Student类做的两个测试,打印了hashcode()值,为什么感觉一直在重复,而且感觉有规律的的样子
st1的引用地址725211281
st2的引用地址1656303042
st3的引用地址1802194480
st4的引用地址1373268072
st5的引用地址1509731795
st6的引用地址1542989260
st7的引用地址7971648
st8的引用地址835501822
b1的引用地址2031038268
b2的引用地址1407601211
b3的引用地址873697925
b4的引用地址1895330936
b5的引用地址1202105401
b6的引用地址259323631
b7的引用地址1207946454
b8的引用地址1793137287
st1的引用地址240713553
st2的引用地址1960977970
st3的引用地址725211281
st4的引用地址1656303042
st5的引用地址1802194480
st6的引用地址1373268072
st7的引用地址1509731795
st8的引用地址1542989260
b1的引用地址7971648
b2的引用地址835501822
b3的引用地址2031038268
b4的引用地址1407601211
b5的引用地址873697925
b6的引用地址1895330936
b7的引用地址1202105401
b8的引用地址259323631
st1的引用地址240713553
st2的引用地址1960977970
st3的引用地址725211281
st4的引用地址1656303042
st5的引用地址1802194480
st6的引用地址1373268072
st7的引用地址1509731795
st8的引用地址1542989260
b1的引用地址7971648
b2的引用地址835501822
b3的引用地址2031038268
b4的引用地址1407601211
b5的引用地址873697925
b6的引用地址1895330936
b7的引用地址1202105401
b8的引用地址259323631
st1的引用地址1960977970
st2的引用地址725211281
st3的引用地址1656303042
st4的引用地址1802194480
st5的引用地址1373268072
st6的引用地址1509731795
st7的引用地址1542989260
st8的引用地址7971648
b1的引用地址835501822
b2的引用地址2031038268
b3的引用地址1407601211
b4的引用地址873697925
b5的引用地址1895330936
b6的引用地址1202105401
b7的引用地址259323631
b8的引用地址1207946454
每一个对象是相互独立的。 就好像我们人的身份证一样,每一个证件号码只能对应一个人。
如果别人的号码和你一样,别人做了坏事,却要抓你去坐牢,你说怎么办!
要看你的代码。hashcode不说明什么问题。从地址的角度看,不同类型都是放在相同的内存中的,这没有问题。
但是jvm会加以判断,不允许不兼容的类型的转换。这是出于安全的考虑。C++就没有这种检查。结果就是,不同的类型瞎转换,不是导致数据破坏,就是发生不可预料的错误。
Robot-D 的链接 去看看吧
不同对象的引用,在内存中当然是存在不同的地址的。而引用地址和hashcode不是同一个东西吧。
可以看下hashcode的代码,它是个本地方法,实现不详。但可以肯定的是肯定不是直接和内存地址相等的。