Object之间的比较运算:
1、两个对象指的是不是同一个 ==
2、两个对象的内容是否相等 equals()
自定义的类需要改写equals方法
注:Java中规定,两个equals的对象,它们的hash code也必须相同,所以也需要改写hashCode方法
例子
public class Myobject {
private int data;
public Myobject(int i){
data = i;
}
public boolean equals(Myobject obj){
if(obj!=null&&(obj instanceof Myobject)){
if(this.data==((Myobject)obj).data){
return true;
}
}
return false;
}
public int hashCode(){
return (new Integer(data).hashCode());
}
}
测试下
public class TestMyobject {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Myobject ob1 = new Myobject(1);
Myobject ob2 = new Myobject(1);
Myobject ob3 = new Myobject(3);
System.out.println(ob1.hashCode());
System.out.println(ob2.hashCode());
System.out.println(ob3.hashCode());
}
}
1、两个对象指的是不是同一个 ==
2、两个对象的内容是否相等 equals()
自定义的类需要改写equals方法
注:Java中规定,两个equals的对象,它们的hash code也必须相同,所以也需要改写hashCode方法
例子
public class Myobject {
private int data;
public Myobject(int i){
data = i;
}
public boolean equals(Myobject obj){
if(obj!=null&&(obj instanceof Myobject)){
if(this.data==((Myobject)obj).data){
return true;
}
}
return false;
}
public int hashCode(){
return (new Integer(data).hashCode());
}
}
测试下
public class TestMyobject {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Myobject ob1 = new Myobject(1);
Myobject ob2 = new Myobject(1);
Myobject ob3 = new Myobject(3);
System.out.println(ob1.hashCode());
System.out.println(ob2.hashCode());
System.out.println(ob3.hashCode());
}
}