System类提供了一个identityHashCode(Object x)方法,这个方法返回的是指定对象的精确hashCode值,也就是根据该对象的地址计算得到的hashCode值。

当某个类的hashCode()方法被重写之后,该类实例的hashCode方法就不能唯一地标识该对象,但是如果两个对象的identityHashCode值相同,则这两个对象是一个对象。

通过以下代码加深理解:

 public class IdentityHashCodeTest{
public static void main(String[] args){
String s1=new String("Hello");
String s2=new String("Hello");
System.out.println(s1.hashCode()+"----"+s2.hashCode());
System.out.println(System.identityHashCode(s1)+"----"+System.identityHashCode(s2)); String s3="Java";
String s4="Java";
System.out.println(System.identityHashCode(s3)+"----"+System.identityHashCode(s4));
}
}

输出结果如下:

结论;

1.s1和s2虽然是不同的两个对象,它们的identityHashCode值不同,但是由于String重写了hashCode方法,改为根据字符序列计算,所以第一个输出是一样而第二个是不一样的。

2.s3和s4是相同的对象,在常量池里,所以第三个输出是一样的。

Java学习:identityHashCode和hashCode方法的更多相关文章

  1. Java学习-026-类名或方法名应用之二 -- 统计分析基础

    前文讲述了类名或方法的应用之一调试源码,具体请参阅:Java学习-025-类名或方法名应用之一 -- 调试源码 此文主要讲述类名或方法应用之二统计分析,通过在各个方法中插桩(调用桩方法),获取方法的调 ...

  2. Java学习-025-类名或方法名应用之一 -- 调试源码

    上文讲述了如何获取类名和方法名,敬请参阅: Java学习-024-获取当前类名或方法名二三文 . 通常在应用开发中,调试或查看是哪个文件中的方法调用了当前文件的此方法,因而在实际的应用中需要获取相应的 ...

  3. java中equals和hashCode方法随笔二

    前几天看了篇关于java中equals和hashCode方法的解析 1.Object类中的equals方法和hashCode方法. Object类中的equals和hashCode方法简单明了,所有的 ...

  4. Java equals()方法和hashCode()方法

    equals()方法 如果满足了以下任何一个条件,就不需要覆盖equals()方法: 1 类的每个实例本质上都是唯一的. 2 不关心类是否提供了“逻辑相等”的测试功能. 3 父类已经覆盖了equals ...

  5. java学习-- equals和hashCode的关系

    hashcode的目的就是在hashset或者hashmap等中比较两个对象相等时,减少equals的使用次数来提高效率 以下为摘录 java中hashcode和equals的区别和联系 HashSe ...

  6. java学习笔记5--类的方法

    接着前面的学习: java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) java学习笔记2--数据类型.数组 java学习笔记1--开发环境平台总结 本文地址 ...

  7. java重写equals和hashCode方法

    一.重写equals方法 如果不重写equals,那么比较的将是对象的引用是否指向同一块内存地址,重写之后目的是为了比较两个对象的value值是否相等. 利用equals比较八大包装对象(如int,f ...

  8. 【Java】equals()与hashCode()方法详解 (转)

    java.lang.Object类中有两个非常重要的方法: 1 2 public boolean equals(Object obj) public int hashCode() Object类是类继 ...

  9. Java 重写equals()与hashCode()方法

    List对象的contains方法实际上也是调用的equals()方法来进行逐条对比的. 示例代码: package com.imooc.collection; /** * 课程类 */ public ...

随机推荐

  1. XFF和referer

    XFF构造来源IP Refer构造来源浏览器

  2. [CSP-S模拟测试]:五子棋(模拟)

    题目传送门(内部题122) 输入格式 输入文件第一行为一个正整数$n$,表示双方总共下了多少步棋. 接下来$n$行,输入文件每行两个正整数.第$i$行的两个数$x,y$表示第$i$步的棋子下在了第$x ...

  3. ltelliJ IDEA 创建Maven web项目无src目录的解决方案

    https://blog.csdn.net/xiaoke815/article/details/72810976 一.缘由 这几天闲来无事,突然想试试IDEA这个编译器,之前一直都在用Eclipse ...

  4. uswgi

    1.安装uwsgi注意: 1)在系统环境安装,非虚拟环境 2)使用对应python版本安装 3)要先安装python开发包 ###sudo apt-get install python3.6-dev ...

  5. 完美解决前端跨域之 easyXDM 的使用和解析

    前端跨域问题在大型网站中是比较常见的问题.本文详细介绍了利用 easyXDM 解决前端跨域的原理细节和使用细节,具体使用时可以在文中代码实例的基础上扩展完成. 0.背景 因个别网络运营商存在 HTTP ...

  6. R语言爬取动态网页之环境准备

    在R实现pm2.5地图数据展示文章中,使用rvest包实现了静态页面的数据抓取,然而rvest只能抓取静态网页,而诸如ajax异步加载的动态网页结构无能为力.在R语言中,爬取这类网页可以使用RSele ...

  7. 后盾网lavarel视频项目---Laravel 安装代码智能提示扩展「laravel-ide-helper」

    后盾网lavarel视频项目---Laravel 安装代码智能提示扩展「laravel-ide-helper」 一.总结 一句话总结: laravel-ide-helper作用是:代码提示 larav ...

  8. java JIT

    JVM 即时编译器即时编译器 (Just In Time Compiler) 简称JIT JAVA程序最初是通过解释器 (Interpreter) 进行解释执行的,当 JVM 发现某个方法或代码块运行 ...

  9. leetcode241 为运算表达式设计优先级

    class Solution(object): def diffWaysToCompute(self, input): """ :type input: str :rty ...

  10. 浏览器端-W3School-HTML:HTML DOM Select 对象

    ylbtech-浏览器端-W3School-HTML:HTML DOM Select 对象 1.返回顶部 1. HTML DOM Select 对象 Select 对象 Select 对象代表 HTM ...