您的位置:首页 > 其它

equals&&hashCode&&toString函数

2016-07-30 23:49 225 查看
equals函数

1.所有类中都继承了equals函数,equals函数存在于object类

 

“==”表示两个引用是否指向同一个对象(堆内存中同一个地址)。

 

一般情况下,对象的内容相等依据:

1.对象的类型相同(可以使用instanceof操作符进行比较,

boolean flag=p instanceof Student;是的话返回true)

2.两个对象的成员变量的值完全相同。

 
boolean a.equals(b)
如果a和b对象相同,返回true
 
继承来的equals函数只能满足”==”标准,需要对equals函数进行复写
public class User{
String name;
int age;
public boolean equals(Object obj){
if(this==obj){
return true;
}
boolean flag=obj instanceof User;
if(flag){
User u=(User)obj;
if(this.age==u.age&&this.name.equals(u.name))//String类型是引用,使用”==”会表示同一对象。
return true;
else{
return false;
}
}
else{
return false;
}
}
}

public static void main(String args[]){
User u1=new User();
User u2=new User();
u1.age=2;
u1.name="sa";
u2.age=3;
u2.name="sd";
System.out.println(u1.equals(u2));
}

 

hashCode()函数

存在于Object类当中,因为所有的类的继承了Object类,所以所有的类都有上述的方法。





图中,输出null,因为map中get方法是通过找对象的哈希值找对象,由于新生成的对象和map中的对象虽然相等,但是并不是同一对象所以哈希值不一样,所以找不到。

对hashCode进行复写

一般用31,可由系统自动生成

toString()函数,调试时使用

toString(),把对象转换成一个String类型的字符串

public class User{
String name;
int age;

public String toString(){
String result="name:"+name+" age:"+age;
return result;
}
}
public class Test {
public static void main(String args[]){
User u1=new User();
u1.age=2;
u1.name="sa";
System.out.println(u1);//自动调用u1的toString函数
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: