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类,所以所有的类都有上述的方法。
![](https://img-blog.csdn.net/20160730233621468?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20160730233654030?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
图中,输出null,因为map中get方法是通过找对象的哈希值找对象,由于新生成的对象和map中的对象虽然相等,但是并不是同一对象所以哈希值不一样,所以找不到。
对hashCode进行复写
一般用31,可由系统自动生成
toString()函数,调试时使用
toString(),把对象转换成一个String类型的字符串
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函数 } }
相关文章推荐
- hashcode & equals
- hashcode&equals续
- java 中的hashcode&equals
- 为什么 IDEA 自带的 equals & hashCode generate 不好
- hashcode & equals通俗理解
- hashcode & equals
- 基础加强____【哈希表数据结构】【深入理解hashcode & equals】
- Lombok(1.14.8) - @Getter, @Setter, @ToString, @EqualsAndHashCode & @Data
- Java 中hashCode & Equals方法
- Equals 和 hashcode 经典代码
- What's the effect of hashCode() & equals() when adding object to List/Set/Map
- 谈谈hashCode&equals&HashMap
- 比较Java中"hashCode" "equals" "==" "System.identityhashcode"
- TreeSet+LinkedHashSet+Comparable+Hashcode+Equals
- Working with hashCode and equals methods in java
- hashcode and equals
- Java hashcode 与 equals的关系
- equals and hashcode method in hibernate framework
- Maintainable HashCode and Equals Using Apache Commons
- hashcode and equals