public class equals {
public equals(String s,int y){

}
public static void main(String[] args) {
equals e=new equals("luck",20);
equals q=new equals("luck",20);
System.out.println(e.equals(q));
}
菜鸟求教  为什么返回false啊

解决方案 »

  1.   

    每new一下就会分配一个不同的空间
      

  2.   

    朋友不要乱说哦,equals比较内存地址?那==比较什么?去看看java基础在来说嘛,别误导新人,楼主原因是没有重写equals和hashCode方法
      

  3.   

    去看看equals源码就明白了,还有一点new的是两个对象,是不想等的
      

  4.   

    首先来说Equals这个类是你自己写的,但是你并没有重写Object类中的equals方法,所以,e.equals(q)中的这个equals()方法是Object中的,然而Object中的equals()方法跟 == 是一样的,你所说的equals()比较的不是地址一说,举个例子,比如String中的equals(),那是因为重写了object中的equals()。你可以去看下源码。
    songjunhua01并没有误人子弟。
    提示你,类名的首字母大写。
      

  5.   

    楼主  你写的那个代码  其实和下边的代码是一个效果
    public class A extends Object{
        public A(){}
        
        public static void main(String[] a){
             A a1 = new A();
             A a2 = new A();
             System.out.println(a1.equals(a2));
        }
    }
    你不继承任何类,则默认继承Object
    而Object类的equals方法  就是比较两个对象是不是一个内存地址,即是不是一个对象。
    而new 则是每次都是生成新对象   所以a1和a2不是一个对象  故而返回false
    至于有些类比较对象的内容  那是因为那些类重写了Object类的equals方法(比如String)