首页 > 代码库 > java:复写equals实例
java:复写equals实例
class User { String name; int age; /* *比较过程思路: *1、两个对象指向位置相同,那么他们就相等,return后跳出函数,不再往下执行 *2、指向位置不同,有3情况 *a:这两对象类型相同,并且内容相同,也属于相等 *b:类型相同,内容不同,属于不等; *c:类型不同,属于不等 */ public boolean equals(Object obj){ //1、指向位置相同,指定同一对象 if(this == obj){ return true; } //2、指向位置不同 //能调用这里的equals,肯定是生成了User对象的,所以this肯定是User类型 //判断obj是不是User类型,如果是就跟this为同一类型 boolean b =obj instanceof User; if(b){ /* *类型相同,obj为User类型,而跟this位置不同的对象(第1步已证明) *obj来源可能是: *User obj = new User(); *或 *Object obj =new Object(); //Object是 User的父类 */ //obj向下转型为User对象,以便一定能调用User里面的值 User u =(User)obj;
//这里的equals是用name调用的(jdk里面String复写过的equals方法),不是当前类的equals
//基本数据类型用==比,引用数据类型用equals比 if(this.age == u.age && this.name.equals(u.name)){ return true; }else{ return false; } }else { //类型不同,不是user对象,不等 return false; } } }
class Test { public static void main(String args[]){ //测试一:同地址,相等 User u1 = new User(); User u2 = u1; u1.name="sss"; boolean b = u1.equals(u2); System.out.println(b); //测试二:地址不同,类型、内容相同,相等 User u3 = new User(); User u4 = new User(); u3.name="sss"; u4.name="sss"; boolean b2 = u3.equals(u4); System.out.println(b2); } }
其他:
java:String使用equals和==比较的区别
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。