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
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
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;
}}
不重写的话,调的是Object类的方法,和==是一样的:
public boolean equals(Object obj) {
return (this == obj);
}
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.
也就是说如果你比较的对象是同一个实例,那么就返回true
否则返回flase其他楼说的也不错
Integer是包装类型的,JDB将Integer类 重写了equals方法,里面是对 对象的数据进行比较,而本来Object的equals方法是和==一样的 是比地址的