先看一下object類常見的**
public
class
object
public string tostring()
說明一點:native修飾的方法說明是本地方法,本地方法是用c/c++**來進行實現的。所以這裡看不到
getclass()方法是獲取位元組碼檔案物件的,得到了位元組碼物件,就可利用反射來進行操作了。
public
final
native class<
?>
getclass()
;
其中可以看出這裡使用final關鍵字進行修飾的,也就是說子類不可以對其進行重寫,但是可以進行使用。
物件呼叫了這個方法,表示的是在執行時期的物件的資料型別。實際上也就是哪個物件呼叫的就代表的是哪個物件的位元組碼物件,而不是指的是引用的資料型別。
hashcode(),子類沒有重新 這個方法之前,這個方法返回的是該物件在計算機的硬體中「物理單元」的位址,可以認為是獨一無二的,也就是說new出來的物件是獨一無二的。
public
native
inthashcode()
;
在具體的使用當中,用來判斷兩個物件是否是同乙個物件
obj1==obj2 // true或者是false
如果沒有重寫,那麼預設比較的是物件的hashcode值。這種意義不是很大
重要的面試題:
integer類和string類。在遇到的時候將進行詳細的說明。
equals
public
boolean
equals
(object obj)
這裡也就等價於是在比較位址值,由上面的hashcode可以看出來,位址值是乙個int型別的數字
如果不重寫,那麼這個方法比較的還是hashcode值
public string tostring()
{return
getclass()
.getname()
+"@"
+ integer.
tohexstring
(hashcode()
);
還原一下
public string tostring()
{return
this
.getclass()
.getname()
+"@"
+ integer.
tohexstring
(hashcode()
);
這裡的this**的是類中的物件,物件代用方法得到類的全限定類名
然後將後面計算出來的資料進行拼接。
因為string模擬較的重要,但是重寫了其中的三個方法,在其中研究一下。
lodash 常用方法原始碼解析
將陣列 array 拆分成多個 size 長度的區塊,並將這些區塊組成乙個新陣列。如果array 無法被分割成全部等長的區塊,那麼最後剩餘的元素將組成乙個區塊。let newarray chunk array,2 將 array 分成兩組原理 var index 0,resindex 0,resul...
JAVA hashset常用方法和原始碼分析
public static void main string args 其中map 的資料型別為hashmap,value值為object private transient hashmapmap hashsethashset new hashset hashset插入元素本質是對hashmap插入...
js 陣列常用方法原始碼實現
手寫push原始碼實現 1.在陣列的末尾新增 2.可以一次新增多項不同型別的資料 3.返回陣列的長度 const array 1,2,3,4 console.log array.push 5,6,7 console.dir array array.prototype.mypush function ...