首页 > 代码库 > equals函数
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)); }}
equals函数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。