Swift 數據類型

==========git

在咱們使用任何程序語言編程時,須要使用各類數據類型來存儲不一樣的信息。編程

變量的數據類型決定了如何將表明這些值的位存儲到計算機的內存中。在聲明變量時也可指定它的數據類型。安全

全部變量都具備數據類型,以決定可以存儲哪一種數據。code


內置數據類型

Swift 提供了很是豐富的數據類型,如下列出了經常使用了幾種數據類型:內存

Int

通常來講,你不須要專門指定整數的長度。Swift 提供了一個特殊的整數類型Int,長度與當前平臺的原生字長相同:開發

  • 在32位平臺上,IntInt32長度相同。
  • 在64位平臺上,IntInt64長度相同。

除非你須要特定長度的整數,通常來講使用Int就夠了。這能夠提升代碼一致性和可複用性。即便是在32位平臺上,Int能夠存儲的整數範圍也能夠達到-2,147,483,648~2,147,483,647,大多數時候這已經足夠大了。字符串

UInt

Swift 也提供了一個特殊的無符號類型UInt,長度與當前平臺的原生字長相同:it

  • 在32位平臺上,UIntUInt32長度相同。
  • 在64位平臺上,UIntUInt64長度相同。
注意: 儘可能不要使用 UInt,除非你真的須要存儲一個和當前平臺原生字長相同的無符號整數。除了這種狀況,最好使用 Int,即便你要存儲的值已知是非負的。統一使用 Int能夠提升代碼的可複用性,避免不一樣類型數字之間的轉換,而且匹配數字的類型推斷。

整數類型須要注意如下幾點:io

  • 在 32 位系統上, Int 和 Int32 長度相同。
  • 在 64 位系統上, Int 和 Int64 長度相同。
  • 在 32 位系統上, UInt 和 UInt32 長度相同。
  • 在 64 位系統上, UInt 和 UInt64 長度相同。
  • Int8, Int16, Int32, Int64 分別表示 8 位, 16 位, 32 位, 和 64 位的有符號整數形式。
  • UInt8, UInt16, UInt32, UInt64 分別表示 8 位, 16 位, 32 位 和 64 位的無符號整數形式。

浮點數:Float、Double

浮點數是有小數部分的數字,好比 3.141590.1-273.15編譯

浮點類型比整數類型表示的範圍更大,能夠存儲比 Int 類型更大或者更小的數字。Swift 提供了兩種有符號浮點數類型:

  • Double 表示64位浮點數。當你須要存儲很大或者很高精度的浮點數時請使用此類型。
  • Float 表示32位浮點數。精度要求不高的話能夠使用此類型。
注意: Double精確度很高,至少有15位數字,而 Float 最少只有6位數字。選擇哪一個類型取決於你的代碼須要處理的值的範圍。

布爾值:Bool

Swift 有一個基本的布爾(Boolean)類型,叫作 Bool。布爾值指邏輯上的值,由於它們只能是真或者假。Swift 有兩個布爾常量,true 和 false。

字符串:String

字符串是字符的序列集合,例如:

"Hello, World!"

字符:Character

字符指的是單個字母,例如:

"C"

可選類型:Optional

使用可選類型來處理值可能缺失的狀況。可選類型表示有值或沒有值。


數值範圍

下表顯示了不一樣變量類型內存的存儲空間,及變量類型的最大最小值:

類型

大小(字節)

區間值

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

相關文章
相關標籤/搜索