类型不兼容的两个对象可以使用equals(),但是返回值一定是false。
相同类型对象值不同也会返回false
类型不兼容的两个对象不能使用==,编译会出错

解决方案 »

  1.   

    某些情况覆写equals,equals比较的是值,而 == 比较的是引用(内存分配的地址)。
      

  2.   

    ==指两个对象相等,EQUALS("")是字副串相等
      

  3.   

    前面大家回答我不明白b1.equals(b2)  比较的是内存的地址
    那为什么
    c1.equals(c2)  比较的是值呢?
    b1返回的是内存地址,c1返回的却是数值3,这是为什么?
      

  4.   

    Object的equals方法:如下 ,比较的是地址
     public boolean equals(Object obj) {
    return (this == obj);
        }
    Integer 的equals方法 :如下:比较的是value
     public boolean equals(Object obj) {
    if (obj instanceof Integer) {
        return value == ((Integer)obj).intValue();
    }
    return false;
      }
    Object的toString方法:
         public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
        }
    Integer 的toString方法: 
        public String toString() {
    return String.valueOf(value);
        }
      

  5.   

    ==比较的是两个对象的地址,而equals比较的是两个对象的值,equals返回值是boolean的
    就如同:System.out.println(c1==c2); //返回false,因为cl与c2的地址不同
            System.out.println(c1.equals(c2));//返回true;,因为c1值(3)与c2的值(3)相同,所以equals的返回值是true
      

  6.   

    equals()到底比较的是什么,要看这个类得equals()方法是怎样写的,就像上面的兄弟说的样:
    Object中equals就是比较两个object是否==,
    而其他一些类可能会重载equals方法,例如Integer中,他是判断Integer对象中的整数值是否相等,所以equals到底比较什么不能想当然,要看看这个类的说明文档或具体实现。
    ==一定是判断两个对象指向的内存空间是否相同,即是否是同一个对象
      

  7.   

    对于基本类型的比较,用==就可以达到你需要的目的,对于类类型,我想你多数情况下需要使用equals()方法去比较。对于你自己写的类,你还要自己写一个相应的equals方法,否则无法进行比较。
      

  8.   

    上面说的是对于java中的类,而对于原始类型int char等,==就是判断值是否相等的,对于他们没有equals方法的。
      

  9.   

    简单的说:
    1、==是比较的reference,也就是所谓的指针啊,句柄之类的。
    2、equals比较的是实质的内容,也就是真正对象的内容。
    3、equals基本上都是被重载了的,如果不重载的话,效果和==是一样的。(可喜的是,SUN在在大部分class里面都把equals都重载了,我们就不需要再自己动手了)
      

  10.   

    在java中基本上所有的数据都是对象,当然还有几个不是对象。
    equals是object中的方法,而且java中所有的类都是从object继承而来的,有很多类都重载了这个方法,所以这个方法说成是比较内容要好一些。
      

  11.   

    都被讲完了
    我来分析一下A a1=new A();
    A a2=new A();
    A b1=new A(2);
    A b2=new A(2);
    Integer c1=new Integer(3);
    Integer c2=new Integer(3);
    System.out.println(a1==a2); //返回false //这里是用new虽然没有赋值但是有内存空间
    System.out.println(a1.equals(a2));//返回false 没有比较的对象 把A换成String就能看出了
    System.out.println(b1==b2);//返回false
    System.out.println(b1.equals(b2));//返回false   这里和上面一样 你的A是什么
    System.out.println(b1);//返回内存地址
    System.out.println(c1==c2);//返回false
    System.out.println(c1.equals(c2));//返回true;   equal用于字符串           
    System.out.println(c1); //返回数值3 ;           不是A不是String