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

解决方案 »

  1.   

    因为你没有复写Value的hashcode方法和euqals方法
      

  2.   

    已经帮你重写好了。
    package com.server;public class StringTest
    {
    public static void main(String[] args)
    {
    Value v1 = new Value();
    Value v2 = new Value();
    v1.i = v2.i = 100;
    System.out.println(v1.equals(v2));
    }
    }class Value
    {
    int i; @Override
    public int hashCode()
    {
    final int prime = 31;
    int result = 1;
    result = prime * result + i;
    return result;
    } @Override
    public boolean equals(Object obj)
    {
    if (this == obj)
    return true;
    if (obj == null)
    return false;
    if (getClass() != obj.getClass())
    return false;
    final Value other = (Value) obj;
    if (i != other.i)
    return false;
    return true;
    }}
      

  3.   

    要重写Value 类的equals方法才行。
    不重写的话,调的是Object类的方法,和==是一样的:
        public boolean equals(Object obj) {
    return (this == obj);
        }
      

  4.   

    没有重写object里的equals方法,使用的效果跟==是一样的,比较的是内存地存,两个是不同的对象,所以输出false.
      

  5.   

    1, Please study how equals() method works.
    2, Class Value extends Class Object, where equals method use "==" operator to test equality.
    3, If Class Value does not overwrite equals() method, "==" operator will be used.To fix your program, overwrite equals() method in Class Value.
    [Java Code]
    class Value
    {
        int i;    public boolean equals(Object o)
        {
            return (o instanceof Value) && (((Value)o).i == this.i);
        }
    }
    [Java Code]You may also study how hashCode() method works and the relationship between hashCode() and equals() method.
      

  6.   

    如果比较字符串就不用重写了。自己查查API。
      

  7.   

    你这里的equals()方法比较的是两个对象的引用
    也就是说如果你比较的对象是同一个实例,那么就返回true
    否则返回flase其他楼说的也不错
      

  8.   


    Integer是包装类型的,JDB将Integer类 重写了equals方法,里面是对 对象的数据进行比较,而本来Object的equals方法是和==一样的 是比地址的