==比较的是地址,equals()方法比较的是对象的属性,所以...

解决方案 »

  1.   

    一个对象名实际是一个指针 
    ==比较的是两个指针是否指向同一个地址 
    equals比较的是两个指针指向的地址中的内容 JAVA中的变量分为基本类型和对象类型,基本类型包括int,long,char之类的变量,在判断这类变量是否相等时,使用==,而在对象之间进行比较时==就不行了,如果两个对象使用==比较返回true的话,说明它们指向的是同一个引用,这样的比较没有意义,所以对象之间的比较用从Object对象里继承来的equals()方法来进行,Object中的equals()方法不做任何实际比较,只是符合如下规律:1.可逆(reflexive) 例x.equals(x)返回true 2.对称(symmetric) 例如果x.equals(y)返回true,则y.equals(x)返回true 3.传递(transitive) 例如果x.equals(y)返回true,y.equals(z)返回true,则x.equals(z)返回true 4.持续(consistent) 5.非空 
    所有对象实现的equals()方法都满足这些条件,而不同的对象比较的方法则不相同,例如String对象的equals()就是比较两个自符串每个自符是否一致来实现的,因此如果是自己创建的对象,如果想要比较的话,就应该自己实现equals()方法.
      

  2.   

    ==  是两个对象是否指向同一个地址的比较
    equals  是两个对象内容的比较
    so