==========git
在咱們使用任何程序語言編程時,須要使用各類數據類型來存儲不一樣的信息。編程
變量的數據類型決定了如何將表明這些值的位存儲到計算機的內存中。在聲明變量時也可指定它的數據類型。安全
全部變量都具備數據類型,以決定可以存儲哪一種數據。code
Swift 提供了很是豐富的數據類型,如下列出了經常使用了幾種數據類型:內存
通常來講,你不須要專門指定整數的長度。Swift 提供了一個特殊的整數類型Int
,長度與當前平臺的原生字長相同:開發
Int
和Int32
長度相同。Int
和Int64
長度相同。除非你須要特定長度的整數,通常來講使用Int
就夠了。這能夠提升代碼一致性和可複用性。即便是在32位平臺上,Int
能夠存儲的整數範圍也能夠達到-2,147,483,648
~2,147,483,647
,大多數時候這已經足夠大了。字符串
Swift 也提供了一個特殊的無符號類型UInt
,長度與當前平臺的原生字長相同:it
UInt
和UInt32
長度相同。UInt
和UInt64
長度相同。注意: 儘可能不要使用UInt
,除非你真的須要存儲一個和當前平臺原生字長相同的無符號整數。除了這種狀況,最好使用Int
,即便你要存儲的值已知是非負的。統一使用Int
能夠提升代碼的可複用性,避免不一樣類型數字之間的轉換,而且匹配數字的類型推斷。
整數類型須要注意如下幾點:io
浮點數是有小數部分的數字,好比 3.14159
,0.1
和 -273.15
。編譯
浮點類型比整數類型表示的範圍更大,能夠存儲比 Int
類型更大或者更小的數字。Swift 提供了兩種有符號浮點數類型:
注意:Double
精確度很高,至少有15位數字,而Float
最少只有6位數字。選擇哪一個類型取決於你的代碼須要處理的值的範圍。
Swift 有一個基本的布爾(Boolean)類型,叫作 Bool。布爾值指邏輯上的值,由於它們只能是真或者假。Swift 有兩個布爾常量,true 和 false。
字符串是字符的序列集合,例如:
"Hello, World!"
字符指的是單個字母,例如:
"C"
使用可選類型來處理值可能缺失的狀況。可選類型表示有值或沒有值。
下表顯示了不一樣變量類型內存的存儲空間,及變量類型的最大最小值:
類型
大小(字節)
區間值
Int8
1 字節
-128 到 127
UInt8
1 字節
0 到 255
Int32
4 字節
-2147483648 到 2147483647
UInt32
4 字節
0 到 4294967295
Int64
8 字節
-9223372036854775808 到 9223372036854775807
UInt64
8 字節
0 到 18446744073709551615
Float
4 字節
1.2E-38 到 3.4E+38 (~6 digits)
Double
8 字節
2.3E-308 到 1.7E+308 (~15 digits)
類型別名對當前的類型定義了另外一個名字,類型別名經過使用 typealias 關鍵字來定義。語法格式以下:
typealias newname = type
例如如下定義了 Int 的類型別名爲 Feet:
typealias Feet = Int
如今,咱們能夠經過別名來定義變量:
import Cocoa
typealias Feet = Int
var distance: Feet = 100
print(distance)
咱們使用 playground 執行以上程序,輸出結果爲:
100
Swift 是一個類型安全(type safe)的語言。
因爲 Swift 是類型安全的,因此它會在編譯你的代碼時進行類型檢查(type checks),並把不匹配的類型標記爲錯誤。這可讓你在開發的時候儘早發現並修復錯誤。
import Cocoa
var varA = 42
varA = "This is hello"
print(varA)
以上程序,會在 Xcode 中報錯:
error: cannot assign value of type 'String' to type 'Int'
varA = "This is hello"
意思爲不能將 'String' 字符串賦值給 'Int' 變量。
當你要處理不一樣類型的值時,類型檢查能夠幫你避免錯誤。然而,這並非說你每次聲明常量和變量的時候都須要顯式指定類型。
若是你沒有顯式指定類型,Swift 會使用類型推斷(type inference)來選擇合適的類型。
例如,若是你給一個新常量賦值42而且沒有標明類型,Swift 能夠推斷出常量類型是Int,由於你給它賦的初始值看起來像一個整數:
let meaningOfLife = 42
// meaningOfLife 會被推測爲 Int 類型
同理,若是你沒有給浮點字面量標明類型,Swift 會推斷你想要的是Double:
let pi = 3.14159
// pi 會被推測爲 Double 類型
當推斷浮點數的類型時,Swift 老是會選擇Double而不是Float。
若是表達式中同時出現了整數和浮點數,會被推斷爲Double類型:
let anotherPi = 3 + 0.14159
// anotherPi 會被推測爲 Double 類型
原始值3沒有顯式聲明類型,而表達式中出現了一個浮點字面量,因此表達式會被推斷爲Double類型。
import Cocoa
// varA 會被推測爲 Int 類型
var varA = 42
print(varA)
// varB 會被推測爲 Double 類型
var varB = 3.14159
print(varB)
// varC 也會被推測爲 Double 類型
var varC = 3 + 0.14159
print(varC)
執行以上代碼,輸出結果爲:
423.141593.14159