Java的HashCode
·HashCode就是根据对象存储在内存的地址计算出的一个值。这个值可以标识这个对象的位置。也可以对比两个引用变量是否指向同一个对象。
·String重写了hashCode方法——改为根据字符序列计算hashCode值,所以String通过String new("String")方式创建的两个相同字符串内容的对象他们的hashcode相同。
·要想获取正确的hashcode,需要使用System.identityHashCode() 方法
例子:摘自某书籍
public class IdentityHashCodeTest
{
public static void main(String[] args)
{
//下面程序中s1和s2是两个不同对象
String s1 = new String("Hello");
String s2 = new String("Hello");
//String重写了hashCode方法——改为根据字符序列计算hashCode值,
//因为s1和s2的字符序列相同,所以它们的hashCode方法返回值相同
System.out.println(s1.hashCode()
+ "----" + s2.hashCode());
//s1和s2是不同的字符串对象,所以它们的identityHashCode值不同
System.out.println(System.identityHashCode(s1)
+ "----" + System.identityHashCode(s2));
String s3 = "Java";
String s4 = "Java";
//s3和s4是相同的字符串对象,所以它们的identityHashCode值相同
System.out.println(System.identityHashCode(s3)
+ "----" + System.identityHashCode(s4));
}
}
输出结果:
69609650----69609650
13078969----3154093
28399250----28399250
Java的HashCode的更多相关文章
- java集合-hashCode
hashCode 的作用 在 Java 集合中有两类,一类是 List,一类是 Set 他们之间的区别就在于 List 集合中的元素师有序的,且可以重复,而 Set 集合中元素是无序不可重复的.对于 ...
- Java中hashCode的作用
转 http://blog.csdn.net/fenglibing/article/details/8905007 Java中hashCode的作用 2013-05-09 13:54 64351人阅 ...
- java 覆盖hashCode()深入探讨 代码演示样例
java 翻盖hashCode()深入探讨 代码演示样例 package org.rui.collection2.hashcode; /** * 覆盖hashcode * 设计HashCode时最重要 ...
- java 中hashcode和equals 总结
一.概述 在Java中hashCode的实现总是伴随着equals,他们是紧密配合的,你要是自己设计了其中一个,就要设计另外一个.当然在多数情况下,这两个方法是不用我们考虑的,直 ...
- Java中hashcode的理解
Java中hashcode的理解 原文链接http://blog.csdn.net/chinayuan/article/details/3345559 怎样理解hashCode的作用: 以 java. ...
- Java Map hashCode深究
[Java心得总结七]Java容器下——Map 在自己总结的这篇文章中有提到hashCode,但是没有细究,今天细究整理一下hashCode相关问题 1.hashCode与equals 首先我们都知道 ...
- java中hashcode()和equals()的详解
今天下午研究了半天hashcode()和equals()方法,终于有了一点点的明白,写下来与大家分享(zhaoxudong 2008.10.23晚21.36). 1. 首先equals()和hashc ...
- java的HashCode方法
总的来说,Java中的集合(Collection)有两类,一类是List,再有一类是Set. 前者集合内的元素是有序的,元素可以重复: 后者元素无序,但元素不可重复. 要想保证元素不重复,可两个元素是 ...
- Java中hashCode()方法以及HashMap()中hash()方法
Java的Object类中有一个hashCode()方法: public final native Class<?> getClass(); public native int hashC ...
- java 关于hashcode和equals的测试
package thinkingInJava; import java.util.HashMap; /* * 测试在向以hashcode为基础的集合(HashSet , HashMap , HashT ...
随机推荐
- GUI动态创建button
#include "cocos2d.h" #include "cocos-ext.h" USING_NS_CC; USING_NS_CC_EXT; using ...
- Android的BUG(三) - 广为人知的诟病:频繁重启问题
使用过Android的同学,尤其是用过山寨pad,应该对Android的重启问题印象深刻吧.Android由于其设计的复杂性,可能会使得系统在不经意时陷入异常状态,因此Android设计了一套看门狗机 ...
- C# ignoring letter case for if statement(Stackoverflow)
Question: I have this if statement: if (input == 'day') Console.Write({0}, dayData); When the user t ...
- HTML 5与HTML 4的区别
严重的拖延者患者,本来前天就打算写的,奈何拖到的今天才...(对拖延症有啥好的建议还望留言下,感激不尽...) 过完年了,跳槽蠢蠢欲动了,看些基础知识好应对面试,正好就整理整理... 正文开始 1.推 ...
- 分享非常有用的Java程序(关键代码)(八)---Java InputStream读取网络响应Response数据的方法!(重要)
原文:分享非常有用的Java程序(关键代码)(八)---Java InputStream读取网络响应Response数据的方法!(重要) Java InputStream读取数据问题 ======== ...
- poj3070 Fibonacci 矩阵快速幂
学了线代之后 终于明白了矩阵的乘法.. 于是 第一道矩阵快速幂.. 实在是太水了... 这差不多是个模板了 #include <cstdlib> #include <cstring& ...
- 怎样实现多文件上传 在iOS开发中
NSURL* url = [NSURL URLWithString:@"xxx"]; ASIFormDataRequest* request = [ASIFormDataReque ...
- php:兄弟连之面向对象版图形计算器2
上篇说到通过result.class.php来分流,因为三个类都继承了shape这个类,让我们来看一下,面向对象中的继承. shape.class.shape文件 <?php abstract ...
- .Net 社区虚拟大会”(dotnetConf)
.Net 社区虚拟大会”(dotnetConf) “.Net 社区虚拟大会”(dotnetConf) 2016 今天凌晨在Channel9 上召开,在Scott Hunter的30分钟的 Keynot ...
- hdu1200(来来回回串起来)
Problem Description Mo and Larry have devised a way of encrypting messages. They first decide secret ...