菜鸟求教
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一下就会分配一个不同的空间 --------------------编程问答--------------------
朋友不要乱说哦,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