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是相同的对象,在常量池里,所以第三个输出是一样的。

最新文章

  1. jquery缓存使用jquery.cookies.2.2.0.min.js
  2. nodejs最新教程
  3. js原型基础
  4. HDU 5769 后缀数组
  5. word2vec模型原理与实现
  6. poj3660 最短路/拓扑序
  7. Java实战之04JavaWeb-03会话技术
  8. 转: Ant 脚本的结构化设计
  9. Java 8新特性探究(八)精简的JRE详解
  10. DNS信息
  11. .NET Framework 各版本区别(简介)
  12. php中查询mysql如何在IN array中用
  13. Prism for WPF初探(构建简单的模块化开发框架)
  14. Java延时器
  15. 关于JS获取某月最后一天
  16. 【Spring Security】三、自定义数据库实现对用户信息和权限信息的管理
  17. My latest news
  18. Elasticsearch 的一些关键概念
  19. 147.Insertion Sort List---链表排序(直接插入)
  20. Extjs 5 可选择日期+时间的组件DateTimeField

热门文章

  1. JDBC——Connection数据库连接对象
  2. 1.spring源码-BeanPostProcessor后置处理器
  3. (转)DNS使用的是TCP协议还是UDP协议
  4. 跨表更新,Mysql Update Join
  5. centOS7中启动MySQL数据库提示: Failed to start mysqld.service: Unit not foundc
  6. C++-HDU2196-Computer-[树的直径]
  7. mini-batch是什么 以及dataloader的作用
  8. php设计模式之责任链模式实现举报功能实例代码
  9. JS 数组克隆方法总结
  10. 马俊龙ansible教程分享