string s1 = "abc"
;
string s2 = "ab"
;
string s3 = s2 + "c"
;
string s4="
abc"
;string s5="
abcd
";
//在.net中處理字串時,有乙個很重要的機制,叫做字串駐留機制。求兩個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
由於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 的字串在方法區常...