C 反推為什麼string是引用型別

2022-03-26 05:27:27 字數 936 閱讀 6589

為什麼string是引用型別?c#裡面眾所周知,有兩大型別,分別引用型別值型別引用型別有類(class)和字串(string),而值型別有int、double、char、bool等等。

分析string為什麼是引用型別之前,要分析一下,int整型bool布林值為什麼是值型別。int和bool這倆型別的值是已經存在寫死在某個地方了。例如bool只有true和false兩個值,int的值段 -2147483648到2147483647。所以可以說值型別的內容已經寫死了。比如你用int型別宣告乙個字段,賦值的時候你只能賦值 -2147483648到2147483647的數字,不然就會報系統錯誤。字元(char)也是,字元是把計算機的各種單字元寫好了存放在乙個地方,舉例26個字母,0-9都是字元。然而字串是由字串組合一起形成的。因為字串是字元組合而成的,內容是值型別組合成,說明這個內容無法寫死,可以用各種不同的字元組合成不同的新的字串。所以字串不可能是值型別值型別的內容根本無法滿足字串的多變。(因為之前稍微看了一本《30天自製系統》裡面第一步就是把二進位制的內容複製到乙個檔案裡,我猜裡面放的就是所需要的固定值。這些是反推,**有點讓我回想到unsafe的位置,自己理論知識太low,擱置這。對計算機了解不夠深。這裡只是方便一些新手知道)

string  str="

abc";char a='

a';char b='

b';char c='

c';

為什麼string是引用型別

在c 中分為值型別和引用型別,值型別為int float bool char struct等簡單資料型別,引用型別有stirng,class。然而string的身為引用型別卻表現得與值型別十分相同。為什麼string為引用型別呢?首先明白string指向常量空間的位址。如果我們有乙個字串 strin...

String為什麼是final

1.可以快取 hash 值 因為 string 的 hash 值經常被使用,例如 string 用做 hashmap 的 key。不可變的特性可以使得 hash 值也不可變,因此只需要進行一次計算。2.string pool 的需要 如果乙個 string 物件已經被建立過了,那麼就會從 strin...

String為什麼是Final的?

1 final的用途 string是被final修飾的類,其屬性value 是被final修飾的。所以string是不可被繼承的,value被儲存的資料不可更改性 引用位址不可更改,陣列本身可變 但是value是private修飾的,而且string是不可被繼承的,所以保證了字串不可變性 那麼為什麼...