iOS開發Swift篇—(三)字符串和數據類型
一、字符串
字符串是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
let c = a + 10
四、整數
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