一、字元串
字元串是string類型的資料,用雙引号""包住文字内容 let website = "http://www.wendingding.com"
1.字元串的常見操作
(1)用加号 + 做字元串拼接
let scheme = "http://"
let path = “www.wendingding.com”
let website = scheme + path
// website的内容是”http://www.wendingding.com”
(2)用反斜線 \ 和 小括号 () 做字元串插值(把常量\變量插入到字元串中)
let hand = 2
var age = 20
let str = "我今年\(age)歲了,有\(hand)隻手"
// str的内容是"我今年20歲了,有2隻手"
注意:swift是類型安全語言,不同的資料類型是不能相加的。(需要強制轉換類型)
2.列印輸出
swift提供了2個列印輸出函數
println :輸出内容後會自動換行
print :對比println,少了個自動換行的功能
二、資料類型
1.swift中常用的資料類型有
int、float、double、bool、character、string
array、dictionary、元組類型(tuple)、可選類型(optional)
注意:資料類型的首字母都是大寫的
2.指定變量\常量的資料類型
在常量\變量名後面加上 冒号(:) 和 類型名稱
let age: int = 10
上面代碼表示:定義了一個int類型的常量age,初始值是10
提示:一般來說,沒有必要明确指定變量\常量的類型。如果在聲明常量\變量時賦了初始值,swift可以自動推斷出這個常量\變量的類型
如:let age = 20 swift會推斷出age是int類型,因為20是個整數
三、變量的初始化
swift嚴格要求變量在使用之前必須進行初始化
注意:下面的代碼是錯誤的
var a: int
let c = a + 10
說明:
第1行代碼中:swift并不會為變量a賦初值,a沒有初始化
第2行代碼會報錯
下面的代碼是正确的
var a: int = 20
四、整數
1.整數的分類
整數分為2種類型
有符号(signed):正、負、零
無符号(unsigned):正、零
swift提供了8、16、32、64位的有符号和無符号整數,比如
uint8 :8位無符号整型
int32 :32位有符号整型
int8、int16、int32、int64、uint8、uint16、uint32、uint64
2.最值
可以通過min和max屬性來擷取某個類型的最小值和最大值
let minvalue = uint8.min // uint8 類型的 min 等于0
let maxvalue = uint8.max // uint8 類型的 max 等于255
3.int和uint
swift還提供了特殊的有符号整數類型int和無符号整數類型uint
說明:int\uint的長度和目前系統平台一樣
在32位系統平台上,int和uint的長度是32位
在64位系統平台上,int和uint的長度是64位
int在32位系統平台的取值範圍:-2147483648 ~ 2147483647
建議
在定義變量時,别總是在考慮有無符号、資料長度的問題
盡量使用int,這樣可以保證代碼的簡潔、可複用性
4.存儲範圍
每種資料類型都有各自的存儲範圍,比如
int8的存儲範圍是:–128 ~ 127
uint8的存儲範圍是:0 ~ 255
如果數值超過了存儲範圍,編譯器會直接報錯
注意:下面的語句都會直接報錯
let num1: uint8 = -1
let num2: int8 = int8.max + 1
第1行代碼報錯原因: uint8不能存儲負數
第2行代碼報錯原因: int8能存儲的最大值是int8.max
5.整數的表示形式
整數的4種表示形式
(1)十進制數:沒有字首
let i1 = 10 // 10
(2)二進制數:以0b為字首
let i2 = 0b1010 // 10
(3)八進制數:以0o為字首
let i3 = 0o12 // 10
(4)十六進制數:以0x為字首
let i4 = 0xa // 10
五、浮點數
1.浮點數說明
浮點數,就是小數。swift提供了兩種浮點數類型
double :64位浮點數,當浮點值非常大或需要非常精确時使用此類型
float :32位浮點數,當浮點值不需要使用double的時候使用此類型
精确程度
double :至少15位小數
float :至少6位小數
注意:如果沒有明确說明類型,浮點數預設就是double類型
let num = 0.14 // num是double類型的常量
2.浮點數的表示形式
浮點數可以用 十進制 和 十六進制 2種進制來表示
(1)十進制(沒有字首)
1)沒有指數:let d1 = 12.5
2)有指數 :let d2 = 0.125e2
// 0.125e2 == 0.125 * 10²
men == m * 10的n次方
(2)十六進制(以0x為字首,且一定要有指數)
let d3 = 0xc.8p0
// 0xc.8p0 == 0xc.8 * 2º == 12.5 * 1
0xmpn == 0xm * 2的n次方
let d3 = 0xc.8p1
// 0xc.8p1 == 0xc.8 * 2¹ == 12.5 * 2 == 25.0
3.數字格式
數字可以增加額外的格式,使它們更容易閱讀
(1)可以增加額外的零 0
let money = 001999 // 1999
let money2 = 001999.000 // 1999.0
(2)可以增加額外的下劃線 _ ,以增強可讀性
let onemillion1 = 1_000_000 // 1000000
let onemillion2 = 100_0000 // 1000000
let overonemillion = 1_000_000.000_001 // 1000000.000001
說明:增加了額外的零 0和下劃線 _ ,并不會影響原來的數值大小
六、類型轉換
兩個類型不相同的數值,是不能直接進行運算的
示例1:
注意:下面的語句是錯誤的
let num1: uint8 = 10;
let num2: int = 20;
let sum: int = num1 + num2
第3行會報錯說明:
報錯原因:num1是uint8類型,num2是類型int,類型不同,不能相加
解決方案:将num1轉為int類型,就能與num2進行相加
下面的語句是正确的
let sum: int = int(num1) + num2
示例2:
let num1 = 3 // num1是int類型
let num2 = 0.14 // num2是double類型
let sum = num1 + num2
第3行報錯說明:
報錯原因:num1是int類型,num2是類型double,類型不同,不能相加
解決方案:将num1轉為double類型,就能與num2進行相加
let sum = double(num1) + num2
注意:
下面的寫法是正确的
let sum = 3 + 0.14
3和0.14相加得到結果3.14,等指派以後,編譯器才會自動推斷出sum是double類型
七、類型别名
可以使用typealias關鍵字定義類型的别名,跟c語言的typedef作用類似
typealias myint = int // 給int類型起了個别名叫做myint
原類型名稱能用在什麼地方,别名就能用在什麼地方
聲明變量\常量類型
let num: myint = 20
獲得類型的最值
let minvalue = myint.min
類型轉換
let num = myint(3.14) // 3