本帖最后由 陈雪琪 于 2013-5-15 21:57 编辑
- class HashSetDemo
- {
- public static void main(String[] args)
- {
- Demo d1=new Demo();
- Demo d2=new Demo();
- sop(d1);
- sop(d2);
- sop(d1.equals(d2));
- }
- public static void sop(Object obj){
- System.out.println(obj);
- }
- }
- class Demo
- {
- public int hashCode(){
- return 60;
- }
- }
复制代码 输出结果:
Demo@3c
Demo@3c
false
毕老师在视频中将hashCode()方法复写后,返回60,所以创建的两个Demo对象打印后输出的都是Demo@3c
它们的哈希值是一样的,老毕说这个时候就会调用equals方法比较两个对象了。
我在main方法中输出比较结果为false。我也很明白new的的确是两个不同的对象,不明白的是equals方法
比较对象的时候比较的是地址值对吧?它们的地址值不都是Demo@3c么?难道这两个对象都存在在这个地址上?
那似乎也不太对。那么equals方法此时到底是怎么比较出为false的呢?
|