1. 程式人生 > >java.lang包【Object類】

java.lang包【Object類】

過程 fin 一個數 sta dll 添加 object類 map 對象

基本描述:

  (1)Object類位於java.lang包中,java.lang包包含著Java最基礎和核心的類,在編譯時會自動導入;

  (2)Object類是所有Java類的祖先。每個類都使用 Object 作為超類。所有對象(包括數組)都實現這個類的方法。可以使用類型為Object的變量指向任意類型的對象

Object的主要方法介紹:

package java.lang;     
public class Object {     
      
   /* 一個本地方法,具體是用C(C++)在DLL中實現的,然後通過JNI調用。*/      
    private static native void registerNatives();     
  /* 對象初始化時自動調用此方法*/    
    static {     
        registerNatives();     
    }     
   /* 返回此 Object 的運行時類。*/    
    public final native Class<?> getClass(); 

    public native int hashCode();

hashCode()方法:

hash值:Java中的hashCode方法就是根據一定的規則將與對象相關的信息(比如對象的存儲地址,對象的字段等)映射成一個數值,這個數值稱作為散列值。

情景:考慮一種情況,當向集合中插入對象時,如何判別在集合中是否已經存在該對象了?(註意:集合中不允許重復的元素存在)。

大多數人都會想到調用equals方法來逐個進行比較,這個方法確實可行。但是如果集合中已經存在一萬條數據或者更多的數據,如果采用equals方法去逐一比較,效率必然是一個問題。此時hashCode方法的作用就體現出來了,當集合要添加新的對象時,先調用這個對象的hashCode方法,得到對應的hashcode值。實際上在HashMap的具體實現中會用一個table保存已經存進去的對象的hashcode值,如果table中沒有該hashcode值,它就可以直接存進去,不用再進行任何比較了;如果存在該hashcode值, 就調用它的equals方法與新元素進行比較,相同的話就不存了,不相同就散列其它的地址。

重寫hashCode()方法的基本規則:

· 在程序運行過程中,同一個對象多次調用hashCode()方法應該返回相同的值。

· 當兩個對象通過equals()方法比較返回true時,則兩個對象的hashCode()方法返回相等的值。

· 對象用作equals()方法比較標準的Field,都應該用來計算hashCode值。

java.lang包【Object類】