当前位置: 首页 > news >正文

邢台移动网站建设服务wordpress二级域名

邢台移动网站建设服务,wordpress二级域名,网站设计制作报价,为什么wordpress样式无效1.equals方法 1.Object类中的equals方法比较的是两个对象的地址(底层原理是 比较的,即比较的是对象的地址) return (this obj);2.基本数据类型的包装类和String类都重写了equals方法。 基本数据类型:比较的是数值的是否相等 …

1.equals方法

1.Object类中的equals方法比较的是两个对象的地址(底层原理是 == 比较的,即比较的是对象的地址)

return (this == obj);

2.基本数据类型的包装类和String类都重写了equals方法。

  1. 基本数据类型:比较的是数值的是否相等
 public boolean equals(Object obj) {if (obj instanceof Integer) {return value == ((Integer)obj).intValue();}return false;}
  1. String类型:比较的是两个String的内容
public boolean equals(Object anObject) {if (this == anObject) {return true;}if (anObject instanceof String) {String anotherString = (String)anObject;int n = value.length;if (n == anotherString.value.length) {char v1[] = value;char v2[] = anotherString.value;int i = 0;while (n-- != 0) {if (v1[i] != v2[i])return false;i++;}return true;}}return false;}

因此,只看equals方法,equals方法与HashCode没关系。

注意,通常情况下,重写equals方法也要重写hashCode方法,用以保证符合hashCode协议的规范,即:相等的对象需要用相等的hashCode值。因此基本数据类型和String类也重写了hashcode方法(后文会继续深入)

2.Hashcode方法

1.在Object类中,Hashcode表示的是将对象的内存地址进行映射成一个哈希值

public native int hashCode();

2.基本数据类型对应的包装类的HashCode方法,也进行了相应的重写。
Integer :

public static int hashCode(int value) {return value;}

3.在String类中HashCode方法

   //s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]int hash = 0;public int hashCode() {int h = hash;if (h == 0 && value.length > 0) {char val[] = value;for (int i = 0; i < value.length; i++) {h = 31 * h + val[i];}hash = h;}return h;}

3.equals和hashcode的关系

先说结论:

  1. hashcode不同,对应的对象一定不同;hashcode相同,对应的对象也不一定相同(可能存在哈希冲突)
  2. equals相同的对象,hashcode是相同的

【经典问题】
1 为什么重写equals方法时,必须重写hashcode方法?

结论:相同的对象应该有相同的hashcode值,确保数据的一致性

当只重写了equals()而没有重写hashcode(),那么两个对象的hashcode值是从内存地址转化而来,一定不相同。即使是equals的。这就会导致这两个equals的对象被存到了哈希表中不同的位置上,这就违反了key的唯一性。

2.反过来,只重写了hashcode()而没有重写equals(),又会有什么问题?

只重写了hashcode()而没有重写equals(),那么equals()比较的相当于就是内存地址,两次new出来的对象一定是不同的,但如果他们的成员属性的值都相同,那么他们的hashcode就是相同的,会存在同一个链表(或红黑树)中。致命的是,再使用get(key)来获取值时,只要这时传入的key和set(key, value)时使用的key不是同一个对象,即使每个成员属性的值都一样,也不能得到想要的结果,因为这两个key是不equals的,会被当做不同key。

(在使用get()查询元素的时候,集合类也先调key.hashCode()算出数组下标,然后看equals()的结果,但如果没有重写equasl方法就会出现不相等的结果。)

综上所述,Java中的equals()和hashcode()必须同时重写,否则哈希表容器将不能正常工作。

参考链接:
https://blog.csdn.net/a745233700/article/details/83186808

http://www.sczhlp.com/news/77997/

相关文章:

  • 长沙市门户网站建设网站百度排名优化
  • 如何安全有效地清除Windows系统的全部内容
  • php做各种网站类型得模板自媒体平台哪家好
  • 为某网站做网站推广策划方案制作公司内部网站
  • 自助建设wap网站百度?o法提交网站
  • 给网站可以怎么做外链广州注册公司代理记账
  • 义乌网站优化wordpress博客模板推荐
  • 网站收录没图片国外网站赚钱
  • 成都艾邦视觉专业网站建设公司网站建立失败的原因是
  • 甘肃兰州做网站域名有永久的吗
  • 如何承接网站建设外包帮别人做网站交税
  • 做易拉宝的网站门户网站开发项目的风险
  • 建网站开源代码北京室内设计师电话
  • Manacher线性求解所有极长回文串的区间答案
  • 27届春招备战一轮复习第一期
  • 自助建站平台哪家好恋月wordpress
  • 网站建设话术宝典北京网站如何制作
  • 青岛网站开发学校app大全软件网站免费下载
  • 网站 首页 关键词外包网站制作多少钱
  • 网站形式的具体例子郑州网站优化托管
  • 简单的网站建设做网站销售的话术
  • 大孔 PEG 水凝胶中的凝血酶适配体筛选:一步法 HAS 技术如何突破传统筛选瓶颈?
  • B4384 [语言月赛 202508] 选座专家
  • 开展网站建设服务做网站开发要具备哪些素质
  • 武隆专业网站建设公司专注吴中网站建设推广
  • ssh做的大型网站西安成品网站建设
  • 怎么建设推广网站wordpress 安装环境
  • 影视传媒公司网站php源码app推广服务部
  • 做海报的网站有哪些内容中国建设银行网站首页手机银行
  • 婚庆公司网站设计网站的优化方法有哪些内容