关于hashCode()方法返回的hash值表示地址值的事情。比如:
- String s1="heima";
- String s2="heima";
- String s3="itheima";
- System.out.println(s1.hashCode()==s2.hashCode());
复制代码 其输出结果为:true, false;这个是因为s1的"heima"在方法区的常量池中存储了,所以s2可以直接指向s1.所以二者的哈希值相等。
但是老师说,也有地址不同,可hash值相同的时候,因为hash值是根据什么算法算出来的,所以他的结果只能作为地址值的参考。
我疑惑的是,这个hash值,不同对象的情况下,真的可以有相同的机会吗?
另外我的一个疑问就是同样一个对象,虽然在程序未结束时,它的hash值是不变的,但是他的实际地址值也会一直不变吗?就是分配内存的时候,分配好了的对象,地址值就始终不变了吗?谢谢了
|
|