类Wa没有equals方法,那么就继承Object的equals方法,而Object的equals方法比较的是2个对象的地址,故会有false结果

解决方案 »

  1.   

    你在class Wa里面加多一个equals()方法,就可以使得当对象a和b里的值相等时返回true;
    class Wa{
        int i;
        public boolean equals(Object obj){
             if(obj instance of Wa){
                  return this.i==obj.i;
             }else{
                  return false;
             }
        }
    }
      

  2.   

    类Wa要复写equals方法才能使结果为true
      

  3.   

    Integer a=new Integer(1);
    Integer b=new Integer(1);
    a和b对象调用equals方法是比较的a和b的地址?
    返回true就是说a,b是同一个对象的不同引用?
    new 不是生成一个新的对象吗???
    那么a==b是比较的什么呢?二楼的请赐教!我记得equals是比较的是对象吧,==才是比较的引用。第一个例子比较好解释,
    a,b是两个不同对象的引用,a==b返回的是false,但是实质上a,b都是1,所以equals方法返回的是true第二个例子我打个比喻wa 是人类,现在生成了人a 和人 b (new 生成的都是类的新的实例),
    i是性别
    a的性别=b的性别=男人equals比较的是内容,如果返回true就表示a和b是相同的人,明显是错误的!
    a.i.equals(b.i)==true,应该是这样吧
      

  4.   

    类Wa没有equals方法,那么就继承Object的equals方法,而Object的equals方法比较的是2个对象的地址,故会有false结果
      

  5.   

    Ingeger类覆盖了Object类的equals()方法,它比较两个Integer实例中的整数值是否相等,而不是缺省的比较a和b是否指向了同一个对象。所以比较的结果是true.