不要说equals比较的是值==比较的是地址。

解决方案 »

  1.   

    Equals 方法只是在 System.Object 中定义的一个虚拟方法,它由任何选择执行该任务的类所重写。
    == 运算符是一个可由类重载的运算符,该类通常具有恒等行为。
      

  2.   

    在object层面来说是一样的 因为 this.obj = obj这样实现的如果你在类的重写的话那就有区别了  
      

  3.   

    ==是面向过程的操作符;equals是面向对象的操作符==不属于任何类,equals则是任何类(在Java中)的一个方法;1)Primitive1 (基本类型)== Primitive2(基本类型);2)Object Reference1(对象引用)== Object Reference2(对象引用)3)Object Reference1 (对象引用).equals(Object Reference2 (对象引用))这三种比较但却不能Primitive1 (基本类型).equals( Primitive2(基本类型));对于基本类型,没有面向对象中发送消息一说,自然也不会有方法成员。 
      

  4.   

    =操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。
    如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,例如Objet obj = new Object();变量obj是一个内存,new Object()是另一个内存,此时,变量obj所对应的内存中存储的数值就是对象占用的那块内存的首地址。对于指向对象类型的变量,如果要比较两个变量是否指向同一个对象,即要看这两个变量所对应的内存中的数值是否相等,这时候就需要用==操作符进行比较。
    equals方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。例如,对于下面的代码:
    String a=new String("foo");
    String b=new String("foo");
    两条new语句创建了两个对象,然后用a,b这两个变量分别指向了其中一个对象,这是两个不同的对象,它们的首地址是不同的,即a和b中存储的数值是不相同的,所以,表达式a==b将返回false,而这两个对象中的内容是相同的,所以,表达式a.equals(b)将返回true。
      

  5.   

    看看Object的equals:
     public boolean equals(Object obj) {
    return (this == obj);
        }
     
    再来看看String的:
     public boolean equals(Object anObject) {
    if (this == anObject) {
        return true;
    } if (anObject instanceof String) {
      操作     }
    }
    return false;
        }
      

  6.   

    http://www.diybl.com/course/3_program/java/javajs/2007917/71587.html
      

  7.   

    网上一搜一大堆google一下  更容易理解