当前位置: 技术问答>java相关
请教关于equals的问题
来源: 互联网 发布时间:2015-05-26
本文导语: 这是我写的一段程序 public class Po { public int x=1; public int y=2; public String toString(){ return "instance of Po "; } } class PP{ public static void main(String[...
这是我写的一段程序
public class Po {
public int x=1;
public int y=2;
public String toString(){
return "instance of Po ";
}
}
class PP{
public static void main(String[] args){
Po a=new Po();
Po b=new Po();
System.out.println(a.equals(b));
System.out.println(a);
}
}
运行结果为
false
instance of Po
我认为a和b这两个对象应该equals,可为什么实际不是的?
public class Po {
public int x=1;
public int y=2;
public String toString(){
return "instance of Po ";
}
}
class PP{
public static void main(String[] args){
Po a=new Po();
Po b=new Po();
System.out.println(a.equals(b));
System.out.println(a);
}
}
运行结果为
false
instance of Po
我认为a和b这两个对象应该equals,可为什么实际不是的?
|
a和b 是两个不同的object
所以 false.
你没有重载equals()方法,该方法只是判断两个对象实例是否指相同一个内存里的对象,并不是判断该对象的值是否相同
所以 false.
你没有重载equals()方法,该方法只是判断两个对象实例是否指相同一个内存里的对象,并不是判断该对象的值是否相同
|
a和b是Po类型对象
虽然他们句柄所指向的值都是instance of Po,但并不是就说他们两个是String类型的,所以.equals返回为false
改成下面就成了
Po a=new Po();
String a1 = a.toString();
Po b=new Po();
String b1 = b.toString();
这样a1和b1才是真正的String对象,且内容相同
虽然他们句柄所指向的值都是instance of Po,但并不是就说他们两个是String类型的,所以.equals返回为false
改成下面就成了
Po a=new Po();
String a1 = a.toString();
Po b=new Po();
String b1 = b.toString();
这样a1和b1才是真正的String对象,且内容相同