IdentityHashCodeTest
Java学习:identityHashCode和hashCode方法,
System类提供了一个identityHashCode(Object x)方法,这个方法返回的是指定对象的精确hashCode值,也就是根据该对象的地址计算得到的hashCode值。
当某个类的hashCode()方法被重写之后,该类实例的hashCode方法就不能唯一地标识该对象,但是如果两个对象的identityHashCode值相同,则这两个对象是一个对象。
通过以下代码加深理解:
1 public class IdentityHashCodeTest{
2 public static void main(String[] args){
3 String s1=new String("Hello");
4 String s2=new String("Hello");
5 System.out.println(s1.hashCode()+"----"+s2.hashCode());
6 System.out.println(System.identityHashCode(s1)+"----"+System.identityHashCode(s2));
7
8 String s3="Java";
9 String s4="Java";
10 System.out.println(System.identityHashCode(s3)+"----"+System.identityHashCode(s4));
11 }
12 }
输出结果如下:

结论;
1.s1和s2虽然是不同的两个对象,它们的identityHashCode值不同,但是由于String重写了hashCode方法,改为根据字符序列计算,所以第一个输出是一样而第二个是不一样的。
2.s3和s4是相同的对象,在常量池里,所以第三个输出是一样的。
IdentityHashCodeTest的更多相关文章
- 疯狂Java笔记
第四章: 4.6深入数组 1.栈内存和堆内存 每个方法都会建立自己的内存栈,在这个方法内定义的变量会逐个放入栈内存里,随着方法的执行结束,这个方法的内存栈也将自然销毁.因此,所有在方法中定义的局部变量 ...
- Java学习第七篇:与运行环境交互
目录 一.与用户互动 1.main方法形参 2.使用Scanner类获取输入 3.使用BufferedReader类获取输入 二.常用类 1.System类和Runtime类 2.String, St ...
- Java的HashCode
·HashCode就是根据对象存储在内存的地址计算出的一个值.这个值可以标识这个对象的位置.也可以对比两个引用变量是否指向同一个对象. ·String重写了hashCode方法——改为根据字符序列计算 ...
- Java笔记:与系统交互、系统相关的类,Object类
1.程序与用户交互 (1)运行一个Java程序的时候要给它提供一个main方法入口,这边分析一下这个main方法的签名public static void main(String[] args);pu ...
- 【Java】-NO.16.EBook.4.Java.1.007-【疯狂Java讲义第3版 李刚】- Java基础类
1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.007-[疯狂Java讲义第3版 李刚]- Java基础类 Style:EBook Series:J ...
- Java学习:identityHashCode和hashCode方法
System类提供了一个identityHashCode(Object x)方法,这个方法返回的是指定对象的精确hashCode值,也就是根据该对象的地址计算得到的hashCode值. 当某个类的ha ...
随机推荐
- 835. 字符串统计(Trie树模板题)
维护一个字符串集合,支持两种操作: “I x”向集合中插入一个字符串x: “Q x”询问一个字符串在集合中出现了多少次. 共有N个操作,输入的字符串总长度不超过 105105,字符串仅包含小写英文字母 ...
- Cannot find module 'less-bundle-promise'
Error: Cannot find module 'less-bundle-promise' 解决办法 :npm install less-bundle-promise --save
- Oracle VM VirtualBox - ping不通虚拟机
问题描述 用Oracle VM VirtualBox创建虚拟机后,本机电脑ping不通虚拟机 解决方案 https://www.cnblogs.com/ranrongzhen/p/6958485.ht ...
- python hashlib 详解
1.概述 摘要算法简介 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定 ...
- OpenCV中的霍夫线变换和霍夫圆变换
一.霍夫线变换 霍夫线变换是OpenCv中一种寻找直线的方法,输入图像为边缘二值图. 原理: 一条直线在图像二维空间可由两个变量表示, 例如: 1.在 笛卡尔坐标系: 可由参数: (m,b) 斜率和截 ...
- C++-HDU2196-Computer-[树的直径]
直径定义:树上的最长路径,不妨设端点分别为s,t 可以证明(感觉):每个点到其最远点必定为s or t,反之亦然 首先,第一次dfs找到s 然后,第二次dfs以s为根找到t 最后,第三次dfs以t为根 ...
- 常见css属性
div { width: 100px; height: 100px; /* 表示行高 */ line-heigh ...
- dremio的学习点滴
在连接数据源后,进行数据源反射的创建,dremio会在本地创建一个类似于副本的文件,具体目录未知,当下次去执行sql时,则会启动加速器进行查询速度的优化. 反射策略: full update:数据源全 ...
- 使用Samba实现文件共享:Windows和Linux之间
1.概述: 1987 年,微软公司和英特尔公司共同制定了 SMB(Server Messages Block,服务器消息 块)协议,旨在解决局域网内的文件或打印机等资源的共享问题,这也使得在多个主机之 ...
- 转载:Laplace 变换
转自: https://www.zhihu.com/question/22085329 https://wenku.baidu.com/view/691d4629640e52ea551810a6f52 ...