Java中Object类中的hashCode方法在什么时候被调用?

java\u4e2dObject\u7c7b\u7684HashCode\u65b9\u6cd5

hashcode \u4f5c\u7528 \u5b9e\u4f8b\u7684\u552f\u4e00\u6807\u8bc6
\u5728\u540c\u4e00\u8fd0\u884c\u73af\u5883\u4e0b hashcode \u7684\u503c\u662f\u552f\u4e00\u7684 \u5c31\u662f\u4e24\u4e2a\u4e0d\u540c\u5b9e\u4f8b\u5176hashcode\u5728\u540c\u4e00\u8fd0\u884c\u73af\u5883\u7edd\u5bf9\u4e0d\u4e00\u6837 \u4e3b\u8981\u7528\u6765\u533a\u5206 \u4e24\u4e2a\u5b9e\u4f8b\u5728\u7269\u7406\u4e0a\u662f\u4e0d\u662f\u540c\u4e00\u4e2a\u5bf9\u8c61
string a = "111";
string b = "111";
a b \u7684hashcode\u662f\u4e00\u6837\u7684 \u5176\u539f\u56e0\u662fjava\u7684\u5b57\u7b26\u4e32\u6c60\u4f18\u5316\u539f\u56e0
\u4f60\u58f0\u660e\u4e00\u4e2a\u5b57\u7b26\u4e32\u65f6JVM\u4f1a\u5148\u53bb\u67e5\u627e \u5b57\u7b26\u4e32\u6c60 \u662f\u5426\u6709\u76f8\u540c\u5b57\u7b26\u4e32
\u6709\u5c06\u5df2\u7ecf\u6709\u7684\u5b57\u7b26\u4e32\u5bf9\u8c61\u7684\u5f15\u7528\u8fd4\u56de \u800c\u4e0d\u662f\u65b0\u751f\u6210\u4e00\u4e2a\u5b57\u7b26\u5bf9\u8c61\u5230\u5185\u5b58
\u6ca1\u6709 \u65b0\u751f\u6210 \u5e76\u5c06\u8d77\u5f15\u7528\u653e\u5165\u5b57\u7b26\u4e32\u6c60 \u5982\u6b64\u5faa\u73af
\u6240\u4ee5\u4ed6\u4eec\u662f\u540c\u4e00\u4e2a\u5bf9\u8c61 \u5176hashcode\u4e5f\u4e00\u6837
\u81f3\u4e8e\u8fd9\u4e2a
String a = new String("i love you");
String b = new String("i love you");
\u5982\u679chashcode\u4e5f\u4e00\u6837\u7684\u8bdd \u90a3\u4ed6\u4eec\u5e94\u8be5\u4e5f\u662f\u7c7b\u4f3c\u7684\u4f18\u5316\u3002
jdk5 \u597d\u50cf\u4e0d\u4e00\u6837\u5427\uff1f
\u4ece\u8bbe\u8ba1\u6765\u8bf4\u65b9\u6cd5\u540d\u4e00\u6837\u5176\u4f5c\u7528\u4e5f\u8981\u4e00\u6837\u7684 \u5426\u5219\u8fd9\u4e2a\u65b9\u6cd5\u5b9e\u73b0\u7684\u5c31\u4e0d\u662f\u5f88\u7406\u60f3

HashSet \u91cc\u9762\u7684\u5b58\u50a8\u662f\u901a\u8fc7\u5bf9\u8c61\u7684hash\u503c\u53d6\u6a21\u6765\u7684\uff0c\u5f53\u7136\u4f1a\u8c03\u7528hash\u65b9\u6cd5\u5566\u3002

\u7531\u4e8e\u5b58\u5728hash\u78b0\u649e\u7684\u60c5\u51b5\uff0c\u4ed6\u8fd8\u8981\u5224\u65ad\u662f\u4e0d\u662f\u540c\u4e00\u4e2a\u5bf9\u8c61\uff0c\u4e8e\u662fequals\u53c8\u88ab\u8c03\u7528\u4e86

这个很有意思.楼主的问题有深度.

据我所知的,当我们使用到HashMap,HashSet的存储对象的时候,因为这两个类使用到散列表(即所谓的hash table),需要根据对象的hash code得到它们所存储的位置.这个时候程序就需要通过调用hashCode来的到对象的hash code.

这是我所能知道的.

在调用 Equals 的时候被调用。

  • 姹java閲岄潰鐨凥ash<Map>鐨勭敤娉曞拰鍩烘湰瑙i噴,璋㈣阿
    绛旓細鐪 HashMap 绫荤殑 get(K key) 鏂规硶浠g爜: Java浠g爜 public V get(Object key) { // 濡傛灉 key 鏄 null,璋冪敤 getForNullKey 鍙栧嚭瀵瑰簲鐨 value if (key == null) return getForNullKey(); // 鏍规嵁璇 key 鐨 hashCode 鍊艰绠楀畠鐨 hash 鐮 int hash = hash(key.hashCode()); // 鐩存帴鍙栧嚭...
  • java 绫讳腑鐨寤烘瀯鍑藉紡鍜岃В鏋勫嚱寮忓悕閮芥槸浠涔,java闇瑕佹墜鍔ㄩ噴鏀捐祫婧愬悧...
    绛旓細java涓寤烘瀯鍑藉紡鍚嶄笌绫诲悕鐩稿悓,java娌℃湁瑙f瀯鍑藉紡,java涓嶉渶瑕佹墜鍔ㄩ噴鏀捐祫婧,瀹冩槸鏈夊瀮鍦惧洖鏀舵満鍒剁殑銆 涓嶈闅忎究鍦板皢寤烘瀯鍑藉紡鍜岃В鏋勫嚱寮忕殑瀹氫箟浣撴斁鍦ㄧ被瀹e憡涓 inline涓峣nline,骞朵笉浼氬奖鍝嶅缓鏋勫嚱寮忕殑棰勮璇箟,涓嶄細鍥犱负涓嶆槸inline鐨,灏变笉鎵ц鍩虹被鐨勬瀯閫犮傚苟涓斿垎鏋愬湪澶栫殑寤烘瀯鍑藉紡,浠嶇劧鍙兘鏄痠nline鐨勩傚鏋滃缓鏋勫嚱寮忚繃浜庡...
  • java 涓^浠涔堟剰鎬?h ^= (h >>> 20) ^ (h >>> 12);
    绛旓細寮傛垨锛屽氨鏄浆鍖栦负浜岃繘鍒跺悗鐩稿浣嶆瘮杈冪浉鍚岀殑涓0涓嶅悓鐨勪负1 h = h寮傛垨(h >>> 20)寮傛垨(h >>> 12)>>> 鏄浆鍖栦负浜岃繘鍒跺彸绉讳綅锛岀┖鍑烘潵鐨勮ˉ0
  • 鎬庢牱浠java闆嗗悎绫籹et涓彇鍑烘暟鎹?
    绛旓細{System.out.println(((ADD)it.next()).a);}}}寰闆嗗悎绫籹et閲娣诲姞鏁版嵁锛1銆佸畾涔変竴涓猻et瀵硅薄 Set h=new HashSet();2銆佸線set涓坊鍔犳暟鎹 h.add("1st");//寰閲屾坊鍔犱竴涓瓧绗︿覆 Set鏄渶绠鍗曠殑涓绉嶉泦鍚堛傞泦鍚涓殑瀵硅薄涓嶆寜鐗瑰畾鐨勬柟寮忔帓搴忥紝骞朵笖娌℃湁閲嶅瀵硅薄銆係et鎺ュ彛涓昏瀹炵幇浜嗕袱涓疄鐜扮被锛欻ash...
  • java uuid 鏈澶ц兘鐢熸垚澶氬皯鏉?
    绛旓細鏄傜鎷夌伅娉℃渶澶ц兘鎹㈡垚澶氬皯鐡? 鏄傜鎷夌伅娉℃渶澶ц兘鎹㈡垚100鐡 java 鐢熸垚澶氬皯涓猳bject Object 鍦java涓鏄墍鏈夌被鐨勭鍏堬紝灏辨槸鏃犺浠涔堢被锛岃拷婧埌椤跺眰閮芥槸缁ф壙浜Object绫荤殑銆備綘杩欓噷闂甹ava 鐢熸垚澶氬皯涓猳bject锛屾寚鐨勬槸浠涔堬紵鐢佃В9鍏嬫按锛岃兘鐢熸垚澶氬皯鍗囨阿姘 H2O涓璈鐨勮川閲忓垎鏁颁负2/18=1/9锛岄偅瀹屽叏鐢电鐢熸垚姘㈡皵...
  • Java涓char鍨嬪拰鏁村瀷鏁拌兘鐩稿姞?
    绛旓細杩欎釜鏄彲浠ョ浉鍔犵殑锛屽洜涓篶har绫诲瀷鏄彲浠ヨ浆鎹负int绫诲瀷鐨锛堣绠楄繃绋嬩腑鑷畾杩涜杞崲锛屼笉闇瑕佸己鍒惰浆鎹㈢殑锛夈備妇渚嬶細
  • java浠涔堟槸鏂规硶閲嶅啓鐨勮娉曡鍒?
    绛旓細杩斿洖绫诲瀷铏界劧鍏煎鐖剁被锛屼絾鏄笉鍚屽氨鏄笉鍚岋紝鎵浠ヤ笉鏄噸鍐欍傞噸鍐欒鍒欎箣鍥涳細閲嶅啓鏂规硶涓嶈兘鎶涘嚭鏂扮殑寮傚父鎴栬呮瘮琚噸鍐欐柟娉曞0鏄庣殑妫鏌ュ紓甯告洿骞跨殑妫鏌ュ紓甯搞備絾鏄彲浠ユ姏鍑烘洿灏戯紝鏇存湁闄愭垨鑰呬笉鎶涘嚭寮傚父銆備緥锛歩mport java.io.*;public class Test { public static void main (String[]args) { Animal h = new ...
  • 濡備綍鍦–/C++涓皟鐢Java
    绛旓細JDK涓凡缁忛澶囧ソ涓涓弽缂栬瘧宸ュ叿javap,閫氳繃杩欎釜宸ュ叿灏卞彲浠ュ緱鍒绫讳腑姣忎釜灞炴с佹柟娉曠殑瀹氫箟銆備笅闈㈠氨鏉ョ湅鐪媕ni.test.Demo鐨勫畾涔:鎵撳紑鍛戒护琛岀獥鍙e苟杩愯 javap -s -p jni.test.Demo 寰楀埌杩愯缁撴灉濡備笅:Compiled from Demo.java public class jni.test.Demo extends java.lang.Object { public static int COUNT; /* I ...
  • object error鏄粈涔堟剰鎬
    绛旓細2. 瀵硅薄绫诲瀷涓嶅尮閰嶏細褰撳皾璇曞皢涓绉绫诲瀷鐨瀵硅薄鐢ㄤ綔鍙︿竴绉嶇被鍨嬫椂锛屼篃鍙兘浼氬嚭鐜Object Error銆備緥濡傦紝鍦Java涓锛屽鏋滀綘灏濊瘯灏嗕竴涓瓧绗︿覆瀵硅薄褰撲綔鏁扮粍鏉ュ鐞嗭紝缂栬瘧鍣ㄤ細鎶ラ敊銆俲ava String str = "hello";str[0] = 'H'; // Compile error: String is immutable in Java 3. 瀵硅薄鐢熷懡鍛ㄦ湡闂锛氬湪鏌愪簺...
  • java涓璋冪敤c璇█鍑芥暟
    绛旓細鏍规嵁涓婇潰鐢熸垚鐨刪鏂囦欢缂栧啓鐩稿簲鐨勪唬鐮佸疄鐜,寤虹珛涓涓 HelloNative.cpp鐢ㄦ潵瀹炵幇鏄剧ずHello World鐨勫嚱鏁.濡備笅:include <stdio.h> include "HelloNative.h"JNIEXPORT void JNICALL Java_HelloNative_sayHello(JNIEnv *, jobject){ printf("Hello World!\n");} 浠g爜缂栧啓瀹屾垚涔嬪悗,鎴戜滑鍐嶇敤gcc缂栬瘧鎴愬簱鏂囦欢,鍛戒护...
  • 扩展阅读:javascript download ... jsonobject parseobject ... zookeeper java api ... java jsonobject ... javascriptobject ... object complement ... javascript 在线 ... objectively ... obligation ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网