黑马程序员技术交流社区

标题: 关于对象的地址值问题 [打印本页]

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

作者: 奋斗的蜗牛ksd    时间: 2014-11-17 23:39
我刚好今天学习到了 String类,我认为这是 String对象的特点导致的。讲讲我的观点吧! 我没学过哈希值!
01.String s1="heima";//创建一个字符串对象 这个对象是 heima
02.String s2="heima";//创建一个引用 指向heima
这里涉及了字符串的知识点,字符串也是一种对象,它具有唯一性,第一句话 创建了一个heima之后第二句只能引用了,因为字符串最大的特点是:一旦初始化成功 值就不会改变哦!亲!





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2