和 equals 詳細解析

2021-09-17 04:15:56 字數 825 閱讀 1208

public class demo 

}

執行結果:

system.identityhashcode()方法列印的是變數內容指向的位址

此時對於str1來說,有兩個位址,其自身在棧中儲存的位址和內容指向的位址(string池中串的位址)

str2與str1儲存的內容在編譯時期就被確認為指向同一string串(string池中的串)

此時對於str3來說,有兩個位址,其自身在棧中儲存的位址和內容指向的位址(堆中匿名物件的位址)

對於堆中new string()來說,有兩個位址,其自身在堆中儲存的位址(即str3內容指向的位址)和內容指向的位址(string池中串的位址)

判斷的是內容的位址

即對於str1和str2來說,比較的是兩者內容指向的同一位址

即對於str1和str3來說,比較的是兩者內容指向的不同位址(string池中的位址和堆中匿名物件的位址)

判斷的是內容本身

對於str1,str2,str3來說,比較的都是最終指向的string池中字串的具體內容(string類重寫過equals方法)

//string的equals方法

public boolean equals(object anobject)

if (anobject instanceof string)

return true;

}} return false;

}

Java記憶體分配及equals和 號的詳細講解

從圖中我們可以很清晰的看出,程式通重載入器從硬碟中載入到記憶體中,並且儲存到不同的位置,通俗的說就是new出來的東西存放在heap 堆區 區域性變數存放在stack 棧區 靜態變數和字串常量存放在data segment 資料段 中,邏輯 存放在code segment 段 中 通過下面的 來解釋變...

重寫和過載的詳細解析

指的是在同乙個類中,存在多個名稱相同的方法,但是這些方法的引數個數,引數型別,或者引數順序不同。在滿足前面三個條件任意其中乙個的情況下,方法的返回型別和訪問修飾符可以不同。注意 僅僅只是方法的返回型別不同不能構成過載!public class test 引數個數1,引數型別int public vo...

ostream iterator詳細解析

ostream iterator屬於i o流stl介面卡,用於獲取乙個元素,同時儲存在緩衝器中,可以供cout輸出。如果把cout看做成乙個物件,那麼在cout物件當中存在一片用於資料儲存的區域。ostream iterator在stl中一般配合copy函式一起使用,如下 ostream itera...