`

Object.hashCode()方法与System.identityHashCode(object)

 
阅读更多
Object.hashCode()方法与System.identityHashCode(object)的关系
String a = new String("hhh");
   String b = new String("hhh");
   System.out.println(System.identityHashCode(a));
   System.out.println(System.identityHashCode(b));
   System.out.println(a.hashCode());
   System.out.println(b.hashCode());

打印结果
前两个不同
后两个相同
这是为什么呢,我们知道目前a和b是两个不同的对象,他们在内存中存放的地址是不同的,System.identityHashCode方法是java根据对象在内存中的地址算出来的一个数值,不同的地址算出来的结果是不一样的。因此这里打印出的结果不一样。
doc上如是说:返回给定对象的哈希码,该代码与默认的方法 hashCode() 返回的代码一样,无论给定对象的类是否重写 hashCode()。
但是为什么后两个相同呢?这是因为,String类中已经重新写了hashCode()方法,也就是说,String类中hashcode,已经不是根据对象在内存中的地址计算出来的。(具体怎么算出来的,我还没有研究),就是说即使对象在内存中的地址不一样,String中hashcode也可能一样
分享到:
评论

相关推荐

    string-hashcode:java.lang.String.hashCode

    安装npm install string-hashcode 例子var hashCode = require ( 'string-hashcode' ) ;var s = 'abc' ;console . log ( s . hashCode ) ; // undefinedvar code = hashCode ( s ) ;console . log ( s . hashCode ) ...

    equals与hashCode方法讲解

    equals 与 hashCode 方法讲解 equals 方法和 hashCode 方法是 Java 语言中两个重要的方法,它们都是在 Object 类中定义的。equals 方法用于比较两个对象是否相等,而 hashCode 方法用于返回对象的哈希码。 在 Java...

    深入 HashCode 方法~

    ### 深入理解 HashCode 方法 #### 一、HashCode 的基本概念与作用 在 Java 编程语言中,`HashCode` 是一个非常重要且基础的概念。简单来说,`HashCode` 是一个整数值,用于快速定位对象的位置。在 Java 中,每一个...

    关于Object中equals方法和hashCode方法判断的分析

    "关于Object中equals方法和hashCode方法判断的分析" 在 Java 中,Object 类提供了两个重要的方法:equals 方法和 hashCode 方法。这两个方法都是用于比较两个对象是否相等的,但它们的实现机理和作用域却有所不同。...

    重写equals和hashcode方法_equals_重写equals和hashcode方法_

    在Java编程语言中,`equals()` 和 `hashCode()` 方法是Object类中的两个核心方法,所有类都默认继承自Object类。这两个方法在处理对象比较和集合操作时起着至关重要的作用。当我们创建自定义类并需要对对象进行精确...

    学习Object类——为什么要重写equeals和hashcode方法

    Object 类的 equals 和 hashCode 方法的重要性与实现 在 Java 编程语言中,Object 类是所有类的父类,但是在实际开发中,我们往往需要重写 Object 中的 equals 和 hashCode 方法,以便正确地比较对象的逻辑内容,而...

    java中Hashcode的作用.docx

    在Java中,Hashcode的约定是由Java.lang.Object类中的hashCode方法所规定的。这个方法规定了Hashcode的三个基本原则: 1. 在一个应用程序执行期间,如果一个对象的equals方法做比较所用到的信息没有被修改的话,则...

    深入HashCode方法

    这个索引是由对象的HashCode与0x7FFFFFFF进行与操作后再对容器长度取模得出的。这种方法确保了即使是负数的HashCode也能转化为正整数索引,从而适应数组的索引需求。 在存储过程中,对象直接放入对应索引位置,查询...

    如何生成一个合适的hashcode方法Java开发Java

    在Java编程语言中,`hashCode()`方法是每个对象都具备的一个关键组成部分,它与`equals()`方法一起工作,用于对象的比较和哈希表(如`HashMap`、`HashSet`等)的操作。本篇文章将深入探讨如何在Java中生成一个合适的...

    jquery.hash.min.js 和 jquery.ba-hashchange.min.js

    这样,即使用户点击了浏览器的后退或前进按钮,我们也能准确地恢复到之前的状态,提供与多页面应用类似的浏览体验。 `jquery.ba-hashchange.min.js` 是 Ben Alman 编写的 jQuery 插件,它为不支持 ...

    浅谈Java中的hashcode方法

     根据这个方法的声明可知,该方法返回一个int类型的数值,并且是本地方法,因此在Object类中并没有给出具体的实现。  为何Object类需要这样一个方法?它有什么作用呢?我们来具体探讨一下hashCode方法。  一....

    Object类和Scanner类

    **1.2 Object类的方法** - **`public int hashCode()`**: - 该方法返回对象的哈希码值,通常用来支持数据结构如哈希表的操作。 - 哈希码值是由哈希算法计算得出的一个整数值,与对象的实际内存地址相关联但不等同...

    Object.doc

    本文将详细介绍 `Object` 类中的一些关键方法,包括 `equals`、`hashCode`、`toString`、`finalize` 和 `clone` 方法。 #### equals 方法 `equals` 方法用于测试两个对象是否相等。在 `Object` 类中,默认的实现是...

    equals与hashCode在实际开发中的重写写法

    这两个方法通常与`Object`类中的默认实现相关联,但为了在实际开发中实现正确的对象比较和哈希表操作,我们往往需要重写它们。以下是对这两个方法的详细解释以及在实际开发中的应用。 `equals()` 方法: `equals()`...

    JAVA之Object类所有方法

    现在,我们将深入探讨`Object`类中的所有方法。 1. **equals()**: 这个方法用于比较两个对象是否相等。默认的`equals()`方法仅仅比较对象的引用,即如果两个对象是同一个实例,那么它们相等。通常,你需要重写此...

    java中hashcode()和equals()的详解.docx

    ### Java中`hashCode()`与`equals()`方法详解 #### 前言 在Java编程语言中,`hashCode()`与`equals()`方法是非常重要的概念,它们不仅对于深入理解Java内存管理至关重要,也是实现自定义类的关键部分之一。本文将...

    Java equals 方法与hashcode 方法的深入解析.rar

    在Java编程语言中,`equals()`方法和`hashCode()`方法是两个非常重要的概念,它们主要用于对象的比较和哈希表的高效运作。本解析将深入探讨这两个方法的用途、实现原理以及它们之间的关联。 首先,`equals()`方法是...

Global site tag (gtag.js) - Google Analytics