string 駐留機制

2022-01-12 16:28:02 字數 1426 閱讀 3565

string s1 = "

abc"

;

string s2 = "ab"

;

string s3 = s2 + "c"

;

string s4="

abc"

;string s5="

abcd

";

//

求兩個object的引用是否相等

console.writeline(object.referenceequals(s1,s3));//

false

console.writeline(object.referenceequals(s1,s4));//

true

//求兩個object的值是否相等

console.writeline(object.equals(s1, s3));//

true

console.writeline(object.equals(s1, s4));//

true

console.writeline(string.equals(s1, s3));//

true

console.writeline(string.equals(s1, s4));//

true

console.writeline(

string.referenceequals(s1, s3));//

false

console.writeline(string.referenceequals(s1, s4));//

true

//比較兩個字元的大小

console.writeline(string.compare(s1, s2));//

1console.writeline(string.compare(s1, s4));//

0console.writeline(string.compare(s1, s5));//

-1

在.net中處理字串時,有乙個很重要的機制,叫做字串駐留機制。

由於string是程式設計中用到的頻率較高的一種型別,clr對相同的字串,

只分配一次記憶體。clr內部維護著一塊特殊的資料結構,我們叫它字串池,

可以把它理解成是乙個hashtable,這個hashtable維護著程式中用到的一部分字串,

hashtable的key是字串的值,而value則是字串的記憶體位址。一般情況下,

程式中如果建立乙個string型別的變數,

clr會首先在hashtable遍歷具有相同hash code的字串,

如果找到,則直接把該字串的位址返回給相應的變數,

如果沒有才會在記憶體中新建乙個字串物件。

python 駐留機制

1.簡介申明乙個記憶體空間,後續申明相同的值,不會再開闢一塊新的記憶體空間,指向已有的記憶體空間2.適用型別1.str 2.int 3.bool3.實現原理1.系統維護乙個記錄駐留物件的字典 2.當某個物件需要駐留,檢視在字典中是否存在,若存在就指向已存在的記憶體空間 3.新駐留物件不存在於該字典中...

小整數池以及字串駐留機制

在 5,256 這個區間的整數,在記憶體中僅僅會存放乙份。舉例說明 在python中,兩次重複宣告乙個內容一樣的變數的時候,其id 是不一樣的 但是如果在宣告整數的時候,數字是在 5,256 這個區間的整數,其在記憶體中就僅僅存放了乙份,所以id 是一樣的 但是僅僅限於整數,如果是小數則不會觸發 前...

String的記憶體機制

package test public class test4 輸出結果 true false 這裡說明string s a b c 不等同於 string s a s s b s s c 這是因為s a b c 直接被jvm視作s abc 而string s a 這裡建立乙個 a 的字串在方法區常...