本帖最后由 梁枝武 于 2012-11-18 12:03 编辑
class Compare
{
Compare(String a){}
}
class CompareDemo
{
public static void main(String[] args)
{
Compare c1 = new Compare("abc");
Compare c2 = new Compare("abc");
System.out.println(c1.equals(c2));
System.out.println(c1==c2);
}
}为什么这里的equals 和 ==比较结果都是false呢?
楼主的这个new的两个Compare类对象,通过构造函数创建了两个字符串,因为它是属于两个对象的内容,虽然两个字符串引用指向的是同一个地址上的值"abc",但比较的时候并不是比较字符串是否equals 或 == 而是比较 你自定义的Compare对象是否equals 或 == 而你创建的对象没有对上帝类的equals进行复写 所以这个c1.equals(c2) 实际上跟 c1==c2 等价的, 都是比较两个Compare对象的地址值,显然他们不等所以两个结果都为false |