更多免费教学文章请关注这里

equals方法和==
对于String字符串

equals用来判断字符串的内容是否相同
==用来判断引用地址是否相同

equals():反映的是对象或变量具体的值,即两个对象里面包含的值–可能是对象的引用,也可能是值类型的值。

hashCode():计算出对象实例的哈希码,并返回哈希码,又称为散列函数。根类Object的hashCode()方法的计算依赖于对象实例的D(内存地址),故每个Object对象的hashCode都是唯一的;当然,当对象所对应的类重写了hashCode()方法时,结果就截然不同了。

之所以有hashCode方法,是因为在批量的对象比较中,hashCode要比equals来得快,很多集合都用到了hashCode,比如HashTable。

  两个obj,如果equals()相等,hashCode()一定相等。
  两个obj,如果hashCode()相等,equals()不一定相等(Hash散列值有冲突的情况,虽然概率很低)。
所以:
  可以考虑在集合中,判断两个对象是否相等的规则是:
    第一步,如果hashCode()相等,则查看第二步,否则不相等;
    第二步,查看equals()是否相等,如果相等,则两obj相等,否则还是不相等。

※※※※※equals()技能比较内存地址,也能比较值 如果比较值的话 需要重写equals方法

public class testequals {public static void main(String[] args) {//      User u1 = new User(0, "zym");
//      User u2 = new User(0, "zym");
//      System.out.println("test equals method: "+u1.equals(u2));
//      System.out.println("test == : "+(u1==u2));String s = new String("zym");String s2 = new String("zym");System.out.println("test equals method: "+s.equals(s2));System.out.println("test == : "+(s==s2));}}

对于非String字符串所有其他
都是用来判断引用,地址

//Uers 类用于测试
class User{private int id;private String name;//构造方法public User(int id,String name) {this.id = this.id;this.name = this.name;}}
public class testequals {public static void main(String[] args) {User u1 = new User(0, "zym");User u2 = new User(0, "zym");System.out.println("test equals method: "+u1.equals(u2));System.out.println("test == : "+(u1==u2));}}

java equals和==以及hashmap原理和区别相关推荐

  1. Java集合篇:HashMap原理详解(JDK1.8)

    概述 JDK 1.8对HashMap进行了比较大的优化,底层实现由之前的"数组+链表"改为"数组+链表+红黑树",本文就HashMap的几个常用的重要方法和JD ...

  2. Java集合篇:HashMap原理详解(JDK1.7及之前的版本)

    (本文有关HashMap的源码都是基于JDK1.6的) 摘要: HashMap是Map族中最为常用的一种,也是 Java Collection Framework 的重要成员.本文首先给出了 Hash ...

  3. IO之 java中BIO NIO AIO原理、区别以及应用

    在本篇文章中,我们主要介绍一下java中的BIO NIO AIO,重点是NIO 先说一下同步.异步.阻塞和非阻塞. 简单来讲,同步和异步是针对内核和应用程序之间的交互而言的:阻塞和非阻塞其实是针对进程 ...

  4. HashMap底层实现原理/HashMap与HashTable区别/HashMap与HashSet区别

    Hash算法 Hash,一般翻译做"散列",也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的 ...

  5. HashMap底层实现原理/HashMap与HashTable区别/HashMap与HashSet区别(转)

    HashMap底层实现原理/HashMap与HashTable区别/HashMap与HashSet区别 文章来源:http://www.cnblogs.com/beatIteWeNerverGiveU ...

  6. java基础--java中HashMap原理

    java中HashMap原理 内推军P21 P22 1.为什么用HashMap? HashMap是一个散列桶(数组和链表),它存储的内容是键值对(key-value)映射HashMap采用了数组和链表 ...

  7. Java集合篇:HashMap 与 ConcurrentHashMap 原理总结

    一.HashMap原理总结: 1.什么是HashMap: (1)HashMap 是基于 Map 接口的非同步实现,线程不安全,是为了快速存取而设计的:它采用 key-value 键值对的形式存放元素( ...

  8. 【Java基础】HashMap原理详解

    [Java基础]HashMap原理详解 HashMap的实现 1. 数组 2.线性链表 3.红黑树 3.1概述 3.2性质 4.HashMap扩容死锁 5. BATJ一线大厂技术栈 HashMap的实 ...

  9. Java基础-hashMap原理剖析

    Java基础-hashMap原理剖析 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一.什么是哈希(Hash) 答:Hash就是散列,即把对象打散.举个例子,有100000条数 ...

最新文章

  1. 「CF622F」The Sum of the k-th Powers「拉格朗日插值」
  2. 使用Selenium自动化测试处理多个浏览器选项卡
  3. 工程师的成熟模型_数据工程师的成熟度
  4. mysql alter table if_MySQL中的alter table命令的基本使用方法及提速优化
  5. Java 计算两个日期之间的相差天数
  6. 《Nature》颠覆性发现!第四种热传递方式找到了
  7. struts2的国际化(即实现网站整体中英文切换)实例
  8. 【比赛】CCL“中国法研杯”相似案例匹配评测竞赛 - TOP队伍攻略分享
  9. 嵌入式Linux驱动学习之路(二)u-boot体验
  10. 【图论】Floyd算法求任意两点间最短路
  11. Unity鼠标拖拽旋转拉远拉近场景
  12. 太阳的光和灯光有什么区别_阳光和灯光
  13. 分别计算二维数组主对角线元素与辅对角线元素的和。
  14. 基于单片机的测量心率脉搏健康系统设计与
  15. 抖音Flutter插件的使用
  16. v-model的底层原理
  17. ACM 广搜 Hero In Maze
  18. 移动软件技术——Activity(1)
  19. Qumarion 3D技术轻松建模 动漫制作更省心
  20. Unity-3D 第一个小游戏开发

热门文章

  1. 微软Asp.Net架构与项目团队管理建设模型分析
  2. Linux和win7双系统时间错误问题
  3. Q91:真实地模拟透明材质(Realistic Transparency)(4)——Fish Bowl
  4. mysql4语法_4 MySQL 语法技巧
  5. 大数据分析平台的功能有哪些
  6. 郴州大数据产业招商会在深举行,中琛源科技签约智慧水务项目
  7. opencv检测相交点_OpenCV学习笔记(八) 边缘、线与圆的检测
  8. 牛客2022年除夕AK场
  9. 防刷新ajax视频教程,【赖国荣】Ajax基础与提升第7讲:ajax实现刷新内容实例讲解...
  10. 重磅︱R+NLP:text2vec包——New 文本分析生态系统 No.1(一,简介)