大家好,问个问题
class Demo
{
public static void main(String [] args)
{
Demo d1 = new Demo();
Demo d2 = new Demo();
//d1=d2;
System.out.println(d1==d2);
System.out.println(d1.equals(d2));
}
 
}如何重写hashCode和equals方法,就可以输出两个true?//d1=d2;这个方法虽然可以,但是没什么意义
我试了好几遍,只能输出一个true,另一个只能是false,

解决方案 »

  1.   

    public int hashCode() {
        return 0;
    }public boolean equals(Object obj) {
        return (obj != null) && (obj instanceof Demo);
    }
      

  2.   

    == 肯定是不会相同的,这个在代码中没法控制的,这是 JVM 做的事情。不知道你这样做的目的是什么?如果需要获得相同的实例的话,可以使用单例模式来实现。
      

  3.   

    我在 1 楼的代码是瞎写的,我之前看错了你的题目,以为随便怎么 new 那 equals 都相等的,呵呵。我在 1 楼的代码不允许出现在正式的代码中哦!
      

  4.   

    == 对于引用类型来说  比较的是内存地址  相当于指针  在java虚拟内存中 每个对象都有唯一的引用
      

  5.   

    hashCode 和 equals 使用 eclipse 自动生成的就可以满足 95% 以上的需求了,呵呵。
      

  6.   


    呵呵,如果您有问题的话,可以在这里发帖子,如果有需要我的地方可以点那个 bao110908 进入我的空间给我留言,我看到了,并且是我会的,我就会来回复的。如果你没有分了,你可以把帖子发到非技术区去,有需要我的话我也会给您回复的。或者你给我留言,可以送可用分给你的。楼主,你要知道哦,群众的力量是强大的,我只不过是群众当中的一员,呵呵。
      

  7.   

    我真的是着急啊。刚刚辞职,以前是干小学教师的,当教师15年了,今年我都35岁了,不想干老师了,所以在家自学java,希望找份java程序员的工作啊
      

  8.   

    你真是冲动啊,15 年的教师资质竟然会辞职!如果能让我当老师,还是程序员,我宁愿选择前者,程序员压力大,而且还看不见未来!教师是可以干一辈子的工作,年纪越大越吃相。
    程序员的一个工作一般性也就两三年,然后就是找工作,不停地循环,年纪越大越没人啊。现在每年有扎堆的计算机毕业的学生,还有扎堆培训班毕业的学生,程序员竞争非常大。你现在已经 35 岁了,而且还刚工始学,等学好了能找到 Java 方面的工作是很渺茫的。我建议你还是继续去找教师的工作为上上策,Java 嘛可以当作是业余的爱好!PS:你的号被拒绝添加了,明天上班后我再加你吧。
      

  9.   

    这样不慎重的辞职,可以说是你人生中最错误的一次选择!希望你能及时补救,凭你 15 年教师资历再去找教师相关的工作不会是难事。希望你能相信我,我也属于 30 阶段的人了,你可以把 Java 作为业余爱好!
      

  10.   

    可以写个单例模式 重写构造函数,这样的话 new出来的都一样。就可以相同了