數據類型決定了值如何存儲到計算機內存中。在聲明變量時也可指定它的數據類型。不同數據類型來存儲不同的信息,所有變量都具有數據類型,以決定能夠存儲哪種數據。
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中一些類型的高級使用。