图片做视频在线观看网站,网页设计 网站建设啥意思,wordpress图片懒加载,网站建设公司如何盈利和equals有什么区别 对于基本数据类型#xff0c;比较的是值是否相等#xff0c;对于引用类型则是比较的地址是否相等#xff1b;对于equals来说#xff0c;基本数据类型没有equals方法#xff0c;对于引用类型equals比较的是引用对象是否相同
那针对以上结论#xff0c…和equals有什么区别 对于基本数据类型比较的是值是否相等对于引用类型则是比较的地址是否相等对于equals来说基本数据类型没有equals方法对于引用类型equals比较的是引用对象是否相同
那针对以上结论我们来看看以下代码 我们可以看到对于引用对象使用和equals结果都为false对于String类型它的底层默认重写了equals和hashcode方法重写后的equals比较的就是对象的值。
那我们现在重写Userinfo的equals和hashcode方法再来进行输出 package com.yinan.entity;import lombok.*;import java.io.Serializable;import java.util.Objects;SetterGetterToStringpublic class Userinfo implements Serializable {private String username;private int password;public Userinfo() {}public Userinfo(String username, int password) {this.username username;this.password password;}Overridepublic boolean equals(Object o) {if (this o) return true;if (o null || getClass() ! o.getClass()) return false;Userinfo userinfo (Userinfo) o;return password userinfo.password Objects.equals(username, userinfo.username);}Overridepublic int hashCode() {return Objects.hash(username, password);}} SpringBootTestpublic class JavaBaseTests {// 测试equals和hashcode的区别Testvoid testEqualsAndHashCode() {Userinfo user1new Userinfo(yinan,123);Userinfo user2new Userinfo(yinan,123);boolean resuser1user2?true:false;System.out.println(res);boolean reuser1.equals(user2);System.out.println(re);}} 这个时候重写equals方法后就会发现结果变为了true。
总结和equals的区别
对于基础数据类型比较的是值是否相等基础数据类型没有equals方法
对于引用类型比较的是地址是否相同equals如果被重写的话比较的是值是否相同如果没有被重写则会使用Object里面的equals进行比较他们的地址是否相同