1. 程式人生 > >零基礎學習swift

零基礎學習swift

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這樣的比較