引用型別和值型別區別

2021-07-10 13:07:24 字數 1438 閱讀 2444

1.普通的資料型別,和結構體、列舉等,是值型別,賦值時,會建立乙個備份,給新的變數。

2.類、物件是引用型別,賦值時,並不會新建物件的副本,而是把物件的位址給新物件名。

所以,物件名中儲存的並不是完整物件的內容,只儲存了找到這個物件的位址。

3.sets(集)

3.1概念

相同型別、沒有固定順序、數值不能重複的資料集合。

3.2雜湊化

swift中,所以預設的資料型別都是可以雜湊化的。

只有能雜湊化得數值才能儲存在set中。類物件(引用型別)則不行。

物件相等,值得是兩個物件名指向同乙個物件。判斷時,用===

3.3建立和使用

1)建立空set

var 集名=set《資料型別》()

2)新增

inert方法

3)直接用字面量構建

var 集名:set 《資料型別》=[ 值1,值2.,...,值n ] 或

var 集名:set=[ 值1,值2,...,值n ]

4)count 屬性,獲取set中項數

5)isempty,bool值是否為空

6)remove方法,刪除指定數值

7)container方法,監測指定值是否在set中存在,返回bool值

3.4遍歷

因為set中沒有順序,所以不能使用普通for迴圈遍歷,只能使用for in 遍歷。

注意:可以通過sort方法對set排序,返回乙個按值排序的心set,一般用於遍歷中。

3.5 set特殊操作 

4字典dictionary

字典無序,每個項包含兩個部分,鍵key和值value,所有鍵的資料型別要相同,但鍵和值得型別隨意(可相同,可不同)。

鍵key的資料型別必須可雜湊化(為值型別)

4.1建立

1)空字典

var 字典名 =[ 鍵資料型別:值資料型別 ]()

2)用字典字面量建立字典

var 字典名=[  鍵1:值1,鍵2:值2,...,鍵n:值n]

4.2 訪問和修改字典

1)isempty,count,使用方法與陣列、集相同;

2)用下標語法訪問指定項

字典名【key】訪問指定key的字典項

4.3字典遍歷的特點:

因為字典沒有明顯順序,所以只能使用for in遍歷,而不是使用for迴圈。

字典遍歷比較特殊的點:可以遍歷項,也可以單獨遍歷key,或單獨遍歷value

可以通過  字典名.keys獲取所以鍵,也可以通過字典名.values 獲取所以值

獲取後的集合可以轉換為陣列,keys還可以轉化為set。

4.4排序

swift 的字典型別是無序集合型別。為了以特定的順序遍歷字典的鍵或值,可以對字典的keysvalues屬性使用sort()方法。

值型別和引用型別區別

3.1.3 值型別和引用型別的區別 37 值型別和引用型別的基本概念 值型別和引用型別的記憶體分配 值型別的基類 分析問題 所有.net 的型別都可以分為兩類 值型別和引用型別。最簡單也最明確的乙個區分標準是 所有的值型別都繼承自 system.valuetype system.valuetype ...

值型別和引用型別區別

3.1.3 值型別和引用型別的區別 37 值型別和引用型別的基本概念 值型別和引用型別的記憶體分配 值型別的基類 分析問題 所有.net 的型別都可以分為兩類 值型別和引用型別。最簡單也最明確的乙個區分標準是 所有的值型別都繼承自 system.valuetype system.valuetype ...

值型別和引用型別的區別

在開始 net framework的底層型別系統時,常常會聽到一些相互矛盾的說法。一方面,所有的型別都繼承於object類 另一方面 在值型別和引用型別之間轉換時要特別小心 搞清楚這些說法的關鍵在於,要記住 每種型別,無論是內建的結構,如整型或字串型,還是定製類,如myemployee,都繼承於ob...