零基礎學習swift
阿新 • • 發佈:2019-01-05
swift基礎學習篇(二)資料型別
型別 | 型別名 |
---|---|
Int | 整形 |
UInt | 無符號整形 |
Double | 浮點型 |
Float | 浮點型 |
Bool | 布林型別 |
String | 字串 |
Array | 陣列 |
Dictionary | 子典 |
整數
整數就是沒有小數部分的數字(23,-23)。整數可以是有符號(正、負、零)或者無符號(正、零)。
Swift 提供了8,16,32和64位的有符號和無符號整數型別。這些整數型別和 C 語言的命名方式很像,比如8位無符號整數型別是UInt8,32位有符號整數型別是Int32。就像 Swift 的其他型別一樣,整數型別採用大寫命名法。
整數範圍
let minValue = UInt8.min //值是0,所以UInt8的最小值為0
let maxValue = UInt8.max //值是255,所以UInt8的最大值為255
Int
它是由Swift 提供的一個特殊的整數型別,長度與當前平臺的原生字長相同:
• 在32位平臺上,Int和Int32長度相同。
• 在64位平臺上,Int和Int64長度相同。
注:若沒有特定的長度要求,用Int足以。這樣可以提高程式碼的一致性和複用性
UInt
Swift 也提供了一個特殊的***無符號***型別UInt,長度與當前平臺的原生字長相同: • 在32位平臺上,UInt和UInt32長度相同。 • 在64位平臺上,UInt和UInt64長度相同。 注:儘量不要使用UInt,除非你真的需要儲存一個和當前平臺原生字長相同的無符號整數。除了這種情況,最好使用Int,即使你要儲存的值已知是非負的。統一使用Int可以提高程式碼的可複用性,避免不同型別數字之間的轉換,並且匹配數字的型別推測,請參考型別安全和型別推測。
浮點數
浮點數是有小數部分的數字,比如3.14159,0.1和-273.15。
浮點型別比整數型別表示的範圍更大,可以儲存比Int型別更大或者更小的數字。Swift 提供了兩種有符號浮點數型別:
• Double表示64位浮點數。當你需要儲存很大或者很高精度的浮點數時請使用此型別。(精確度很高,至少有15位數字)
• Float表示32位浮點數。精度要求不高的話可以使用此型別。(至少只有6位數字)
型別安全和型別推測
Swift 是一個型別安全(type safe )的語言。由於 Swift 是型別安全的,所以它會在編譯你的程式碼時進行型別檢查(type checks),並把不匹配的型別標記為錯誤。
如果你沒有顯式指定型別,Swift 會使用型別推測(type inference)來選擇合適的型別。有了型別推測,編譯器可以在編譯程式碼的時候自動推測出表示式的型別。原理很簡單,只要檢查你賦的值即可。
例如,
let meaningOfLife = 42 // meaningOfLife 會被推測為 Int 型別
let pi = 3.14159 // pi 會被推測為 Double 型別
let anotherPi = 3 + 0.14159 // anotherPi 會被推測為 Double 型別
注:原始值3沒有顯式宣告型別,而表示式中出現了一個浮點字面量,所以表示式會被推測為Double型別。
數值型字面量
整數字面量可以被寫作:
• 一個十進位制數,沒有字首
• 一個二進位制數,字首是0b
• 一個八進位制數,字首是0o
• 一個十六進位制數,字首是0x
例:
let decimalInteger = 17
let binaryInteger = 0b10001 // 二進位制的17
let octalInteger = 0o21 // 八進位制的17
let hexadecimalInteger = 0x11 // 十六進位制的17
數值型型別轉換
整數轉換
在下面的例子中,常量twoThousand是UInt16型別,然而常量one是Uint8型別。它們不能直接相加,因為它們型別不同。所以要呼叫UInt16(one)來建立一個新的UInt16數字並用one的值來初始化,然後使用這個新數字來計算:
let twoThousand: UInt16 = 2_000
let one: UInt8 = 1
let twoThousandAndOne = twoThousand + UInt16(one)
整數和浮點數轉換
整數和浮點數的轉換必須顯式指定型別:
let three = 3
let pointOneFourOneFiveNine = 0.14159
let pi = Double(three) + pointOneFourOneFiveNine
// pi 等於 3.14159,所以被推測為 Double 型別
浮點數到整數的反向轉換同樣行,整數型別可以用Double或者Float型別來初始化:
let integerPi = Int(pi) // integerPi 等於 3,所以被推測為 Int 型別
當用這種方式來初始化一個新的整數值時,浮點值會被截斷。也就是說4.75會變成4,-3.9會變成-3。
注意:結合數字類常量和變數不同於結合數字類字面量。字面量3可以直接和字面量0.14159相加,因為數字字面量本身沒有明確的型別。它們的型別只在編譯器需要求值的時候被推測。
布林值
Swift 有一個基本的布林(Boolean)型別,叫做Bool。布林值指邏輯上的(logical),因為它們只能是真或者假。Swift 有兩個布林常量,true和false:
let orangesAreOrange = true
let turnipsAreDelicious = false
當你編寫條件語句比如if語句的時候,布林值非常有用:
if turnipsAreDelicious {
println("Mmm, tasty turnips!")
} else {
println("Eww, turnips are horrible.")
}
// 輸出 "Eww, turnips are horrible."
如果你在需要使用Bool型別的地方使用了非布林值,Swift 的型別安全機制會報錯。下面的例子會報告一個編譯時錯誤:
let i = 1 if i { // 這個例子不會通過編譯,會報錯 }
然而,下面的例子是合法的:
let i = 1 if i == 1 { // 這個例子會編譯成功 }
i == 1的比較結果是Bool型別,所以第二個例子可以通過型別檢查。類似i == 1這樣的比較