当前位置:编程学习 > JAVA >>

菜鸟求教

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啊。。。 --------------------编程问答-------------------- 值相同不代表指向地址也相同,e和q分别指向内存中的俩个不同地址 --------------------编程问答-------------------- 哦  哈哈。
--------------------编程问答-------------------- 每new一下就会分配一个不同的空间 --------------------编程问答--------------------
引用 1 楼  的回复:
值相同不代表指向地址也相同,e和q分别指向内存中的俩个不同地址

朋友不要乱说哦,equals比较内存地址?那==比较什么?去看看java基础在来说嘛,别误导新人,楼主原因是没有重写equals和hashCode方法 --------------------编程问答-------------------- 去看看equals源码就明白了,还有一点new的是两个对象,是不想等的 --------------------编程问答-------------------- 首先来说Equals这个类是你自己写的,但是你并没有重写Object类中的equals方法,所以,e.equals(q)中的这个equals()方法是Object中的,然而Object中的equals()方法跟 == 是一样的,你所说的equals()比较的不是地址一说,举个例子,比如String中的equals(),那是因为重写了object中的equals()。你可以去看下源码。
songjunhua01并没有误人子弟。
提示你,类名的首字母大写。 --------------------编程问答-------------------- 6楼说的很好,楼主去按他说的去看下源码吧 --------------------编程问答-------------------- --------------------编程问答-------------------- 楼主  你写的那个代码  其实和下边的代码是一个效果。。。。。。
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)
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,