equals()"
这一定就是对象间的比较,
"123"=="123"
这结果为false
因为他们,不是一个对象
"123".equals("123")
这结果为true
因为他们等值
这个方法,就是因为JAVA,没有重载==引起的,
判断对象等值,你只好用它网上还有说这个例子的,
String mm ="123"
(mm==mm)
结果为true
但是,这有什么意义呢,
难道还是JAVA的特色不成??

解决方案 »

  1.   

    切记,楼上的说法只是针对String
    对于Object,除非两个指向同一个引用,否则== 和 equal的结果都是false
      

  2.   

    权威是《java编程指南》
    以上讲的都不全面
      

  3.   

    ==是个操作符,而equals()不过是类的一个方法,而且并不是每个类都会定义这个方法。
      

  4.   

    我个人认为还是SUN做得不够好,VC++中CString就可以采用“==”的操作方式,SUN为何不把"String"当作一个特殊的类,也提供特殊“==”的操作方式呢。String mm ="123"
    if( mm =="123")//SUN应先把这里的"123"解释为一个String对象,这样的操作就可实现了。
    {
    }
      

  5.   

    其实说点简单点就是:
    一般来说“=”是对像之间的比较;
    面“equals()”刚是对内容的比较。
      

  6.   

    其实说点简单点就是:
    一般来说“=”是对像之间的比较;
    而“equals()”刚是对内容的比较。
    (更正,对不起打错字!)
      

  7.   

    ^_^ 讨论的好 :)查一下jdk src,看看equals原码:)
      

  8.   

    java本来就不提供运算符重载
    ==和equals的含义本来就是不同你以后就体会到好处了
    不要拿那个提供无穷无尽#define的cpp来比
      

  9.   

    equals其实只是Object中的一个方法:
        public boolean equals(Object obj) {
    return (this == obj);
        }
    在默认的情况下,它与==是一致的
    但是String,Integer等等这些类覆盖了equals方法,才使得这些类的equals方法比较的是内容
      

  10.   

    呵呵。。小弟再压缩一下
    ==对象
    equals串
      

  11.   

    == 比较的是 对象
    equals 比较的是 内容。。但对于 String 类型时 如果 植相等时 好象就表示一个对象了,看下面的例:public class Hello { public static void main(String[] args) {

                       String A="123";
     String B="123";
                       if(A.equals(B))
    {
    System.out.println("A equal B");
    }
    if(A==B)
    {
    System.out.println("A=B");
    }
    }
    }结果是:  A equal B
              A=B但如果 不是 String 时 是这样的:public class Hello { public static void main(String[] args) {
                        Integer A=new Integer(123);
      Integer B=new Integer(123);                    if(A.equals(B))
    {
    System.out.println("A equal B");
    }
    if(A==B)
    {
    System.out.println("A=B");
    }
    }
    }
    结果:A equal B
    但很奇怪的是:public class Hello { public static void main(String[] args) {
    //System.out.println("Hello");
    String A=new String("123");
    String B=new String("123");

    //Integer A=new Integer(123);
    //Integer B=new Integer(123);
    if(A.equals(B))
    {
    System.out.println("A equal B");
    }
    if(A==B)
    {
    System.out.println("A=B");
    }
    }
    }结果是:A equal B
    我的想法是: equal比较的是对象的 类容,而 == 比较的是 地址,小弟说错了的话大家不要骂我啊!!
      

  12.   

    好似类似的问题有很多了吧 
    就是地址与内容的区别 
    用栈式、堆式的存储来理解是最好的了 
    栈中存放标识符的类型、地址值(如果是PRIMITIVE TYPE则存放实际值)
    堆中存放对象的实例 
    函数都是传值调用的
      

  13.   

    equals比较的是对象的内容,==比较的是对象的句柄
      

  14.   

    对==来说,如果两个相比较的对象均指向同一个存储区域,那么结果为true,反之为false;
    而equals方法比较的则是对象的内容,如果内容一样,那么结果就为true,而不必管它是否是在同一块存储区域内。
      

  15.   

    谁说"equals比较的是对象的内容"的?
    equals比较的到底是什么要看这个类的equals方法到底是怎么样实现的!
    对于Object这个对象里,equals()就是判断两个object是否==,而对于String ,equals()判断就是两个String对象中的值?谁说“但对于 String 类型时 如果 植相等时 好象就表示一个对象了”?
    你试试这样的代码:
    String s1 = "abc";
    String s2= new String("abc");
    if(s1==s2)
    {
     System.out.println("s1==s2");
    }
    else
    {
     System.out.println("s1!=s2");
    }
    看看结果是什么?这时s1==s2为false, s1.equals(s2)为true!请各位大哥搞清楚概念再来回答别人!