~~~
import Foundation
//整數,沒有小數部分,有正數有負數
/*
Swift 提供了8,16,32和64位的有符號和?符號整數類型。這些整數類型和 C 語?的命
名?式很像,?如8位?符號整數類型是 UInt8 ,32位有符號整數類型是 Int32 。就像
Swift 的其他類型?樣,整數類型采??寫命名法。
*/
var x8 : Int8 = 10
var x16 : Int16 = 10
var x32 : Int32 = 0
var x64 : Int64 = -10
var ux8 : UInt16 = 20
//不再多說
//整數范圍
var minInt32 = Int32.min
var maxInt32 = Int32.max
print("int32.min = \(minInt32), int32.max = \(maxInt32)")
//int32.min = -2147483648, int32.max = 2147483647
/*
?般來說,不需要專?指定整數的?度。Swift 提供了?個特殊的整數類型 Int ,?度與
當前平臺的原?字?相同:
在32位平臺上 Int 和 Int32長度相同
在64位平臺上 Int 和 Int64長度相同
UInt 也是一樣
在32位平臺上 UInt 和 UInt32長度相同
在64位平臺上 UInt 和 UInt64長度相同
盡量不要使? UInt ,除?你真的需要存儲?個和當前平臺原?字?相同的?符號整
數。除了這種情況,最好使? Int ,即使你要存儲的值已知是?負的。統?使
? Int 可以提?代碼的可復?性,避免不同類型數字之間的轉換
*/
//浮點數
/*
Double 表?64位浮點數。當你需要存儲很?或者很?精度的浮點數時請使?此類型。
Float 表?32位浮點數。精度要求不?的話可以使?此類型。
Double 精確度很?,?少有15位數字,? Float 最少只有6位數字。選擇哪個類型取
決于你的代碼需要處理的值的范圍。
*/
//類型推斷
/*
Swift 是?個類型安全(type safe)的語?。類型安全的語?可以讓你清楚地知道代碼要
處理的值的類型。如果你的代碼需要?個 String ,你絕對不可能不??傳進去?個 Int 。
由于 Swift 是類型安全的,所以它會在編譯你的代碼時進?類型檢查(type checks),并
把不匹配的類型標記為錯誤。這可以讓你在開發的時候盡早發現并修復錯誤。
當你要處理不同類型的值時,類型檢查可以幫你避免錯誤。然?,這并不是說你每次聲明
常量和變量的時候都需要顯式指定類型。如果你沒有顯式指定類型,Swift 會使?_類型推
斷(type inference)來選擇合適的類型。有了類型推斷,編譯器可以在編譯代碼的時候
?動推斷出表達式的類型。原理很簡單,只要檢查你賦的值即可
*/
let value1 = 15
//value1會被推斷為Int
let value2 = 12.88
//value2會被推斷為Double
// 當推斷浮點數的類型時,Swift 總是會選擇 Double ?不是 Float
let value3 = 2 + 11.00
//valuew3 會被推斷為Double
//因為:如果表達式中同時出現了整數和浮點數,會被推斷為 Double 類型
//數值類型:
/*
?個?進制數,沒有前綴
?個?進制數,前綴是 0b
?個?進制數,前綴是 0o
?個?六進制數,前綴是 0x
*/
let decimalInteger = 17
let binaryInteger = 0b10001 // ?進制的17
let octalInteger = 0o21 // ?進制的17
let hexadecimalInteger = 0x11 // ?六進制的17
print("十進制:\(decimalInteger), 二進制:\(binaryInteger), 八進制:\(octalInteger), 十六進制:\(hexadecimalInteger)")
//十進制:17, 二進制:17, 八進制:17, 十六進制:17
//如果?個?進制數的指數為 exp ,那這個數相當于基數和10^exp的乘積:
var testEXP = 3.33e5 // = 333000
var testEXPfu = 3.33e-2
print("\(testEXP) - \(testEXPfu)")
//輸出:333000.0 - 0.0333
var testexp2 = 0xAp3 // = 10 * (2 * 2 * 2) = 80
var testexp2fu = 0xap-3
print("\(testexp2) - \(testexp2fu)")
//輸出:80.0 - 1.25
//數值類字?量可以包括額外的格式來增強可讀性。整數和浮點數都可以添加額外的零并且包含下劃線,并不會影響字?量:
let paddedDouble = 000123.456
let oneMillion = 1_000_000
let justOverOneMillion = 1_000_000.000_000_1
//下劃線和0不會影響原有值
//數值類型轉換
/*
不同整數類型的變量和常量可以存儲不同范圍的數字。 Int8 類型的常量或者變量可以存儲
的數字范圍是 -128 ~ 127 ,? UInt8 類型的常量或者變量能存儲的數字范圍是 0 ~ 255 。如
果數字超出了常量或者變量可存儲的范圍,編譯的時候會報錯:
let cannotBeNegative: UInt8 = -1
// UInt8 類型不能存儲負數,所以會報錯
let tooBig: Int8 = Int8.max + 1
// Int8 類型不能存儲超過最?值的數,所以會報錯
由于每種整數類型都可以存儲不同范圍的值,所以你必須根據不同情況選擇性使?數值型
類型轉換。這種選擇性使?的?式,可以預防隱式轉換的錯誤并讓你的代碼中的類型轉換
意圖變得清晰。
要將?種數字類型轉換成另?種,你要?當前值來初始化?個期望類型的新數字,這個數
字的類型就是你的?標類型。在下?的例?中,常量 twoThousand 是 UInt16 類型,然?常
量 one 是 UInt8 類型。它們不能直接相加,因為它們類型不同。所以要調? UInt16(one) 來
創建?個新的 UInt16 數字并? one 的值來初始化,然后使?這個新數字來計算:
*/
var twoThousand: UInt16 = 2_000
var one: UInt8 = 1
var twoThousandAndOne = twoThousand + UInt16(one)
//整數和浮點類型的轉換
var valueInt = 12
var valueDouble = 10.11
var valueTotal = Double(valueInt) + valueDouble
print(valueTotal)
//輸出:22.11
var valueTotalToInt = Int(valueTotal)
print(valueTotalToInt)
//輸出:22
//此時會發生截斷
//類型別名
typealias DZL = Int32
var t1 : DZL = 111
//布爾值
//Swift 有兩個布爾常量, true 和 false
var boolType : Bool = true
~~~
- 前言
- swift控制語句,for,while,repeat-while,if,switch
- swift之聲明常量和變量
- swift之數值類型雜談(數值)
- swift之 元組
- oc與swift混編,OC調用swift,swift調用OC
- swift之可選類型
- swift之數組(Array)、集合(Set)、字典(Dictionary)
- swift之switch續(元組,值綁定,where)
- swift之控制轉移語句,continue,break,fallthrough,return,帶標簽的語句
- swift之函數(functions)
- swift之閉包(closure)
- swift之枚舉
- swift之類和結構體
- swift之屬性
- swift之方法(Methods)