class Value() {
int i;
public Value() {
i = 10;
}
}
public class EqualsMethod2 {
public static void main(String[] args) {
Value v1 = new Value();
Value v2 = new Value();
System.out.println(v1.equals(v2));
}
}
输出结果是什么?
false
为什么?

解决方案 »

  1.   

    class Value() 你这样能编译通过?
    equals()方法要自己写的,覆盖Object类的equals方法class Value {
    int i;
    public Value() {
    i = 10;
    }
             public boolean equals(Value v){
                      if(i=v.i)
                              return true;
                      return false;
             }
    }
      

  2.   

    要覆盖Object的,不然的话,只有两个对象的指向相同的内存,equals()方法才返回true
      

  3.   

    因为你不自己再写一个equals方法,那么你调用的将是从Object类继承二来的equals方法(他是比较两个引用是否执行同一个对象);所以你必须自己重写一个equals方法,内容你自己定
      

  4.   

    equal()是Object中的一个方法,由于java中的所有类继承自Object,所以都有这个方法他默认是比较对象是不是同一个,而String比较植的原因是它自己覆写了这个方法,改变了他的行为,所以成了比较值的
      

  5.   

    equals()比较两个字符串的内容是否相等。 ----------------------------------------
    Value v1 = new Value();
    Value v2 = new Value();
    System.out.println(v1.equals(v2));
    ----------------------------------------
    v1和v2的值是内存地址,并不是字符串。要用"=="来比较
      

  6.   

    如果是值对象(像你的Value对象),通常是要自己实现一个equals方法的,同时也应该实现一个hashCode()方法,否则对一些使用hashCode方法的集合类,如HashMap,Hashtable等,就会出现错误。
    这里的Value类应该写成这样。
    class Value
    {
    int i; public Value ()
    {
    i = 10;
    } public getI()
    {
    return i;
    } public boolean equals(Object obj)
    {
    if (obj == this)
    {
    return true;
    }
    else if (obj == null)
    {
    return false;
    }
    if (!(obj instanceof Value))
    {
    return false;
    }
    Value tmp = (Value)obj;
    if (this.i == tmp.getI())
    {
    return true;
    }
    return false;
    }          public int hashCode()
    {
    return i;
    }
    };
      

  7.   

    学习一下,好像只知道 == 和 obj.equals()方法不太一样,具体的回去翻翻书,惭愧啊
      

  8.   

    equals()比较两个字符串的内容是否相等。
      

  9.   

    equals()就是一个方法,没什么特别的。你自己定义的类,你想让它比较什么就可以比较什么。jdk中的类,看看其源码就明白了。
      

  10.   

    equals()比较的是内存地址号,2个实例的内存地址不一样,所以每个实例都可以有自己的变量和方法,要想用他比较别的,可以重写这个方法,他是Object类的方法
      

  11.   

    你需要自己覆盖该类的 equals 方法。
    并在其中定义你自己的比较方式。
      

  12.   

    ==比较的是所在单位的值!~~但是引用类型所在单位的值就是值的内存地址,或者用于比较基本类型,
    equals是在object 类里已经定义的方法!~如果不覆盖那方法那equals的效果和==一样~~
      

  13.   

    equals怎么会是比较内容呢??equals就是一个普通方法,可以自己实现如何比较
      

  14.   

    我怎么感觉equals比较的是内容
    如果写成v1.i.equals(v2.i)就对了吧
      

  15.   

    public boolean equals(String s)
    字符串对象调用String类中的equals方法,比较当前字符串对象的实体是否与参数指定的字符串s的实体相同。如:
    String tom=new String("we are students");
    String boy=new String("We are students");
    String jerry=new String("we are students");
    tom.equals(boy)的值是false,  tom.equals(jerry)的值是true.这里还有一个类似的方法,public boolean equalslgnoreCase(String s)  功能是比较当前字符串对象的实体是否与参数指定的字符串s是否相同,比较是忽略大小写!!
      

  16.   

    class Value{
    int i;
    public Value() {
    i = 10;
    }
    }
    public class EqualsMethod2 {
    public static void main(String[] args) {
    Value v1 = new Value();
    Value v2 = new Value();
    System.out.println(v1.equals(v2));
    }
    }
      

  17.   

    类名就不对啦?
    equals与==是不一样的
      

  18.   

    Value v1 = new Value();
    Value v2 = new Value();
    System.out.println(v1.equals(v2));
    这里的equals()是指v1和v2对象里的属性相等...可以自己写个程序测试以下
    if (v1.equals(v2)) Syste.out.println("v1=v2");
     if (v1==v2)  Syste.out.println("v1=v2");自己写出来试试,得出结果就懂了
      

  19.   

    两个人A和B,双胞胎,认为他们长得完全一样,那么A==B返回true,但是A.equals(B)返回false.
    一个人,有一个名字A,一个外号B,那么那么A==B返回true,但是A.equals(B)也返回true.
      

  20.   

    以上是说你从Object类继承的equals方法,如果你自己重写了该方法,结果可能会不一样
      

  21.   

    在对相比较时,
    若对象a==对象b,则是在比较这两个对象在内存中的地址是否相同
    若对象a.equals(对象b)则是比较这两个对象里存储的值是否相同
      

  22.   

    //ztroma(风里密码) ( ) 信誉:100  2006-06-15 15:37:00  得分: 0  //两个人A和B,双胞胎,认为他们长得完全一样,那么A==B返回true,但是A.equals(B)返回false.
    //一个人,有一个名字A,一个外号B,那么那么A==B返回true,但是A.equals(B)也返回true.
     
    讲错鸟,A==B返回true说明A和B一定是同一对象的引用,怎么可能又有A.equals(B)返回false?==比较的是对象的内存地址是否一样,equals()默认比较的也是对象的内存地址,除非覆写该方法,如String类
     
      

  23.   


    =============================
    恩恩
    String的equals()方法是重写过的。可以说==比较对象引用,equals比较内容
    但如果比较其他东东一般都需要重写。可以去看一下Object的equals()方法,跟==是一样的。
        
        public boolean equals(Object obj) {
    return (this == obj);
        }
    =============================