四十四、equals函数的作用
1.equals函数在什么地方
包含在Object类中,Object是所有函数的父类,所以所有的类都包含equals函数。
2.equals函数的作用
“==”操作符的作用:对于对象,==表示两个引用指向同一个对象。
equals的作用,是比较两个对象是否相同。
在通常情况下,对象内容相同的条件:1)对象的类型相同(可以使用instanceof操作符进行比较); 2)两个对象的成员变量的值完全相同;
3.复写equals函数的方法
class User{
String name;
int age;
User(String name,int age){
this.name = name;
this.age = age;
}
public boolean equals(Object obj){
if(this == obj){
return true;
}
boolean b = obj instanceof User;
if(b){
User u = (User)obj;
if(this.name.equals(u.name) && this.age == u.age){
return true;
}
else{
return false;
}
}
else {
return false;
}
}
}
class Test{
public static void main(String[] args){
User a = new User("zhangsan",20);
User b = new User("lisi",20);
User c = a;
User d = new User("zhangsan",20);
//比较两个引用是否指向同一个对象。
System.out.println(a == c);
System.out.println(a == d);
//比较两个引用指向的对象的内容是否相等。
System.out.println(a.equals(c));
System.out.println(a.equals(d));
System.out.println(a.equals(b));
}
}
运行结果:
实际开发过程中,通常利用开发工具直接生成复写equals方法的代码。
四十五、hashcode()与toString()
1、hashCode()的作用
什么是Hash算法:任意长度的数据,通过hash算法,得到一个唯一的散列值。(应用:加密/数据加密)
用于存储数据,用散列值与数据存储位置建立关联,寻找数据时,可以根据散列值找到数据。提高查找效率。
深入了解,多读一些资料。算法与数据结构。
2.hashCode()的实现方法
hashCode是Object中的函数,所有类都有hashCode()方法。放回值为整型,叫做哈希码。
在sun公司的规定中,如果两个对象用equals相比,是相等的,那么它们用hashCode()计算出来的哈希码也是一样的。
如果
返回值为一个整型。
3.toString()的作用
toString()是Object中的函数,所有类都有toString函数。
作用:把一个无论什么类型的对象,转换成一个String字符串,使程序有更好的可读性。便于开发者调试。
4.toString()的实现方法
class User{
String name;
int age;
User(){
}
User(String name,int age){
this.name = name;
this.age = age;
}
public String toString(){
String result ="age:"+ age + ",name:" + name;//把成员函数的值打印出来。
return result;
}
}
import java.util.*;
class Test{
public static void main(String[] args){
User u = new User("zhangsan",20);
System.out.println(u);// 打印对象时,先调用toString方法,然后把返回的值打印出来。
}
}