可以用==判断(深比较,只有是同一个对象时才会相等)
equals方法(浅比较,只要内容相等就返回真),如在自定义的类中使用,须重写hashCode()与equals()具体可以参考(包装类)

解决方案 »

  1.   

    equals()是比较地址的,如果你有什么特殊的需要可以重写~~~
      

  2.   

    ==判断值是否相等 equals()判断地址是否相等 
    hashcode()记不清楚了 是不是比较字符串长度的呀 这个你在问下别人吧
      

  3.   

    public int hashCode()Returns a hash code for this string. The hash code for a String object is computed as 
     s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
     using int arithmetic, where s[i] is the ith character of the string, n is the length of the string, and ^ indicates exponentiation. (The hash value of the empty string is zero.)
      

  4.   

    还是举个例子来说吧!
    String str1 = new String("abc");
    String str2 = new String("abc");
    str1.equals(str2)的值为true //内容是否相同
    str1 == str2的值为false`   // 不是同一对象
      

  5.   

    还是举个例子来说吧!
    String str1 = new String("abc");
    String str2 = new String("abc");
    str1.equals(str2)的值为true //内容是否相同
    str1 == str2的值为false`   // 不是同一对象
      

  6.   

    equals()是比较地址的,如果你有什么特殊的需要可以重写~~~
    ________________________________________________
    这个实在是难以理解!采用equals()方法是用来比较对象的内容是否相等。采用“==”来比较对象的时候才是比较的对象的地址。如楼上所说,声明了两个字符串引用变量str1和str2,由于产生两个对象,所以一定是在内存中占用了不同的空间,所以两个对象所在内存的首地址肯定不同,而str1和str2中恰恰是存放的两个对象的首地址,所以采用“==”比较结果一定不同。而equals()方法比较的是两个对象的内容,str1和str2所引用的对象,内容都是“abc”,所以用equals()比较后相等。
      

  7.   

    其实就是:
    ==是判断地址,而equals是判断其实质是否相等,因此一般要重写equals,同时重写hashCode。
      

  8.   

    我是自定义类的啊!!!! 比如
    public class MyKey
    {
       private String name;
       private int age; 
    }
    求就!
      

  9.   

    你可以重写equal()方法
    public boolean equal(Object o) {
        if (name.equal((MyKey)o.getName()) 
                && age == (MyKey)o.getAge) {
          return true;
        } else {
          return false;
        }
    }
    其中getName()和getAge是获得对象name和age的方法~~~
      

  10.   

    看一下String这个类之后再去写自己类的equal()就是了,hashcode()也要重写
      

  11.   

    Object类中的equal()方法与==是一样的,所以我们再用时要重写这个方法
      

  12.   

    回复人: feng2008ao(afeng) ( ) 信誉:100 
    因此一般要重写equals,同时重写hashCode。hashCode()怎么重写???
    里面要写什么代码???
    我是新手,
    从来没碰到过!
    请教各位
    比如我自定义类
    public class MyKey
    {
       private String name;
       private int age; 
    }
      

  13.   

    public boolean equals(Object o) {
        if (name.equals(((MyKey)o).getName()) 
                && age == ((MyKey)o).getAge()) {
            return true;
        } else {
            return false;
        }
    }
    不好意思刚刚写的有点问题,这个比较准确~~~
      

  14.   

    乱七八糟啊!equals()和hashcode()两个方法都来自根类Object,所有的java类都可以选择重写或者直接用
    根类的实现,根据需要而定。一、关于对象比较
      1、用“==”号:对于基本类型比较的是值;对于对象类型,比较的则是引用(即地址)
    举个例子:
         int i=5;
         int j=5;
    显然i等于j.
    对于对象:
    String o=new String("hello");
    String oo=new String("hello");
     则o==oo的值为false,因为虽然他们指向的内容相同,但是是两个不同的引用
    但是对于String类有个陷阱:
     String s="hello";
     String str="hello";
    则 s==str的值为true,这并不说明以上的规则不对,而是因为String是个不变类,
    如果没用new操作符的话,若已经存在该字符常量hello
    对于String str="hello"这样的指令只是将str指向s相同的地址。恰恰说明了规则的正确性!2、用equals()方法:
      Object类实现equals()的代码如下:
    # public boolean equals(Object obj) {
    #  return (this == obj);
    #     }
    可见默认的实现效果是跟“==”一样的!!!!!
    很多时候,我们并不需要比较引用是否相等,我们要判定两个引用指向的内容是否相等
    这时候你就需要重写该方法,而String类就是这么做的,那么:
    o.equals(oo)与s.equals(str)的值都是true!二、关于hashcode():用在集合操作里面尤其是hashtable结构里,如果两个对象相等,则该方法返回的
    int值必须相等;反之则不成立。