`
清春不二
  • 浏览: 16030 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java对象相等判断机hashcode问题分析

    博客分类:
  • java
阅读更多
对象的引用(object obj)存在栈中,而对象的内容(new object())存在内存的堆中。

两个对象obj1和obj2:
两个对象的类型以及属性值都相同,则这两个对象相等,即obj1.equals(obj2)

如果两个对象引用变量指向同一个对象,则称这两个对象同一,即obj1==obj2

所以,两个对象同一,则肯定相等;两个对象相等,不一定同一。等号“ == ” 判断的是这两个对象是否同一。

hashcode:
两个相等(equals)的对象可能存在不一样的hashcode,如果两个对象的引用都指向同一个内存堆,因为对象的值和属性存在堆中,所以他们是相等(equals)的,但是对象的引用时存在栈中的,而对象的引用在栈中的地址是不同的,所以两个相同的对象的hashcode可能是不同的。

同样两个不同的对象的hashcode也可能是相同的。
分享到:
评论

相关推荐

    Java实例高难度面试题及解析 - 展现你的编程实力!

    您将了解如何正确创建对象实例、访问实例的成员变量和方法、实现对象的拷贝(包括浅拷贝和深拷贝)、判断对象相等性、管理对象的生命周期、实现线程安全的单例模式等。此外,我们还探讨了对象的哈希码、重写equals()...

    java2022面试宝典

    每个对象都可以调用自己的hashCode)方法得到自己的哈希值(hashCode),相当于对象的指纹信息,通常来说世界上没有完全相同的两个指纹,但是在Java中做不到这么绝对,但是我们仍然可以利用hashCode来做一些提前的判断,...

    JAVA基础课程讲义

    JAVA对象的序列化和反序列化 161 为什么需要序列化和反序列化 161 对象的序列化主要有两种用途 161 序列化涉及的类和接口 162 序列化/反序列化的步骤和实例 162 综合的序列化和反序列化练习 163 JAVA.IO包相关流对象...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    9.2.3 判断两个字符串是否相等 223 9.2.4 判断字符串的开头和结尾 225 9.2.5 分割字符串 225 9.2.6 在字符串中查找子字符串或字符 226 9.2.7 替换字符串中的内容 226 9.2.8 String对象——磐石刻字 227 9.3 ...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    9.2.3 判断两个字符串是否相等 223 9.2.4 判断字符串的开头和结尾 225 9.2.5 分割字符串 225 9.2.6 在字符串中查找子字符串或字符 226 9.2.7 替换字符串中的内容 226 9.2.8 String对象——磐石刻字 227 9.3 ...

    jsp内置对象的用法

    3 boolean equals(Object obj) 判断此Object是否与指定的Object对象相等 4 void copy(Object obj) 把此Object拷贝到指定的Object对象中 5 Object clone() 克隆此Object对象 6 String toString() 把此Object...

    java7源码-Java-for-Android-Interview-Outline:android-必填面试大纲欢迎Star,关注

    obj):判断当前对象(this)和obj对象是否相等. 该方法,默认和"=="等价,默认情况下,比较的是内存地址. 而开发中,我们往往不关心是否是同一块内存地址,我们关心的是两个对象的数据是否相同,所以官方建议:所有的Object...

    【05-面向对象(下)】

    •Object类提供的equals方法判断两个对象相等的标准与==完全相同。因此开发者通常需要重写equals方法。 类成员 •在java类里只能包含Field,方法,构造器,初始化块,内部类(接口、枚举)等5种成员。 用...

    达内 coreJava 习题答案

    1,编写程序,判断给定的某个年份是否是闰年。 闰年的判断规则如下: (1)若某个年份能被4整除但不能被100整除,则是闰年。 (2)若某个年份能被400整除,则也是闰年。 import java.util.Scanner; class ...

    sesvc.exe 阿萨德

    如果桶是一个链表则需要遍历判断里面的 hashcode、key 是否和传入 key 相等,如果相等则进行覆盖,并返回原来的值。 如果桶是空的,说明当前位置没有数据存入;新增一个 Entry 对象写入当前位置。 void addEntry(int...

    java 集合----Map、Collection

    HashSet 的 add() 方法添加集合元素时实际上转变为调用 HashMap ...HashMap 的 put() 方法.hashCode() 判断返回值相等,如果返回值相等则再通过 equals 比较也返回 true,最终认为key对象是相等的已经在HashMap中存在。

    IO输入输出留

    java.io 包 java.io.File ============================================================================================ *表示磁盘文件或目录的路径 *可以表示一个不存在的路径 创建实例 --------------------...

Global site tag (gtag.js) - Google Analytics