首页 > 学院 > 开发设计 > 正文

equals函数

2019-11-14 21:55:46
字体:
来源:转载
供稿:网友
equals函数

equals函数在Object类当中,而Object类是所有类的父类,所以所有的类里面都有equals函数。

“==”操作符之前用于比较两个基本数据类型的值是否相等,而对于引用数据类型,“==”操作符用于判断两个引用是否指向堆内存中的同一个对象。

class User{String name;int age;}
class Test{public static void main(String args[]){User u1 = new User();User u2 = new User();User u3 = u1;boolean b1 = u1 == u2;boolean b2 = u1 == u3;System.out.PRintln(b1);System.out.println(b2);}}

equals函数用来比较两个对象的内容是否相等

对象的内容相等通常需要满足下面两个条件:

1、对象的类型相同(用instanceof比较)

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

Object函数中的equals方法:

class Test{public static void main(String args[]){User u1 = new User();User u2 = new User();User u3 = u1;boolean b1 = u1.equals(u3);System.out.println(b1);}}

通过对比我们发现调用Object的equals方法和使用“==”比较两个对象是否相等没有区别,所以我们需要根据上述两个条件复写equals方法

class User{String name;int age;public boolean equals(Object obj){if(this == obj){return true;}boolean b = obj instanceof User;if(b){User u = (User)obj;if(this.age == u.age && this.name.equals(u.name)){return true;}else{return false;}}else{return false;}}}

首先判断this和obj是否指向堆内存中的同一个对象,是的话就返回true,再判断obj是不是User类型的,不是的话返回false,是的话就进行向下转型,再比较this和u的成员变量是否相等。基本数据类型的成员变量比较使用"==",引用数据类型的成员变量比较用equals

class Test{public static void main(String args[]){User u1 = new User();User u2 = new User();User u3 = new User();u1.name = "zhangsan";u1.age = 12;u2.name = "lisi";u2.age = 13;u3.name = "zhangsan";u3.age = 12;System.out.println(u1.equals(u2));System.out.println(u1.equals(u3));}}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表