C/OC/Swift的數據類型沒那麼簡單

數據類型決定了值如何存儲到計算機內存中。在聲明變量時也可指定它的數據類型。不同數據類型來存儲不同的信息,所有變量都具有數據類型,以決定能夠存儲哪種數據。

C語言

C語言的基本數據類型有六種:

short、int、long、char、float、double 

除基本數據類型外,還有一些構造類型,比如:

數組array,結構體struct,枚舉enum以及聯合union

OC的數據類型

OC是C的超集,所以OC的基本數據類型和C完全相同。
當然,作爲一個面向對象的高級語言,除了基本數據類型還定義了一些高級的數據類型。
比如在Foundation中,給一些數據定義了別名,對應的映射關係是:

NSInteger <---->  long
CGFloat   <---->  double
BOOL      <---->  bool

以上的數據類型不需要用指針,不需要手動釋放,方法執行完成後會自動釋放。

但在OC的Foundation框架中,還是封裝了很多對象類型的屬性。

NSNumber
NSString/NSMutableString
NSArray/NSMutableArray
NSSet/NSMutableSet
NSDictionary/NSMutableDictionary
注意:
對於這些面向對象的內存管理,是特別複雜的存在。在編譯和運行的時候,都對其做了優化。
論證過程很複雜,大家可以去網上找相關資料。
只是告訴結論性的東西。
以上的所有可變類型均是以對象的形式保存在堆中,需要關注其引用計數。
對於不可變類型:
比如NSDictionary、NSArray以及NSValue實例,除了空字典和空字符串,其餘實例都遵循對象的內存管理策略。
NSNumber類創建的對於普通數據類型的封裝的實例,其內存管理同樣做了優化,不遵循對象的內存管理策略。

swift的數據類型

swift作爲新的語言,採納了很多優秀的語言特性,完善了基本數據類型,同時推出了很多高級的數據類型。

基本數據類型:

1、Int/Float/Double/Bool/Character/String
    
2、Array/Dictionary/元組類型(Tuple)/可選類型(Optional)

對於整型,根據位數和有無符號做了很多區分

Int8、Int16、Int32、Int64
UInt8、UInt16、UInt32、UInt64

推薦使用Int/UInt類型,因爲其長度和當前系統長度相同,

* 在32位系統平臺上,Int和Uint的長度是32位
* 在64位系統平臺上,Int和Uint的長度是64位

針對浮點型

double: 15位有效數字
float:  6位有效數字

沒有明確的說明,浮點數默認就是Double類型

swift中的Bool數據類型,只有true和false兩種狀態,沒有0和1的狀態。

除此之外的有:

類類型Class
結構體類型struct
枚舉類型enum

結構體類型和枚舉類型進行了擴展,可以添加屬性,定義方法等等。

文末

其實數據類型不侷限於此,文中列舉的主要是一些常見的數據類型。
此文除了作爲簡單介紹外,也希望大家格外關注OC中NSString類型的內存管理,swift中一些類型的高級使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章