天天看點

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”

iOS開發Swift篇—(三)字元串和資料類型

(2)用反斜線 \ 和 小括号 () 做字元串插值(把常量\變量插入到字元串中)

let hand = 2

var age = 20

let str = "我今年\(age)歲了,有\(hand)隻手"

// str的内容是"我今年20歲了,有2隻手"

iOS開發Swift篇—(三)字元串和資料類型

注意:swift是類型安全語言,不同的資料類型是不能相加的。(需要強制轉換類型)

iOS開發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是個整數

iOS開發Swift篇—(三)字元串和資料類型

三、變量的初始化

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