swift學(xué)習(xí)(一)

1.var與let

//用關(guān)鍵字 var 聲明字符串變量 str 類型是通過(guò)右值推斷出來(lái)的(類型推斷)

var str = "Hello, playground"

//聲明一個(gè)變量 view 類型推斷為 UIView類型

var view = UIView()

view.addSubview(UIView())

for var i = 0; i<10; i++ {

}

var a = 10

var b = 20

var c = a + b

//輸出

print(c)

//變量 用var聲明

var variable = 10

variable = 20

//常量 用let聲明

let const = 10 //const 是常量 10 是字面值

//const = 20 //常量不可修改

//字面值

//整數(shù)的字面值

var x = 10

x = 0000000015//整數(shù)的字面值會(huì)忽略前面任意多個(gè)0

x = -15

x = 1_000_000_000//這里的下劃線沒(méi)有實(shí)際意義,只是增加代碼的可讀性

//八進(jìn)制

x = 0o15

//十六進(jìn)制

x = 0xff

//二進(jìn)制

x = 0b110010

//浮點(diǎn)數(shù)

var y = 3.14

y = 1.25E-2//科學(xué)計(jì)數(shù)法? 1.25*10^-2


2.基本類型

//var str = UIImage()

//int a

//var a : Int

//聲明變量標(biāo)準(zhǔn)寫法

var welcomeMessage2 : String = "welcomeMessage"

//類型標(biāo)注? 聲明字符串變量

let welcomeMessage : String

//初始化

welcomeMessage = "Welcome to swift"

//welcomeMessage = 10 //類型不配備

//welcomeMessage = "wts" //常量不可以修改

/********類型推斷? *****/

var x = 10 //推斷為整型

var msg = "OK" //推斷為一個(gè)字符串

var a = 0.0, b = 2.2, c = 2, d = "abc"

//a b 推斷為浮點(diǎn)類型 c 推斷為整型 d 推斷為字符串類型

var i1 = 5

var d1 : Double

//這里的類型檢查非常嚴(yán)格,int和double之間都不能自動(dòng)轉(zhuǎn)換,如果要轉(zhuǎn)換必須強(qiáng)制轉(zhuǎn)換

d1 = Double(i1)

//i1 = i1 + 3.14

d1 = d1 + 3.14

//字符串拼接

var label = "This is"

var label2 = "label"

var text = label + label2

var width = 94

text = text + " width is " + String(width)

print(text)

let apples = 3

let oranges = 5

let appleSummary = "我有\(zhòng)(apples)個(gè)蘋果和\(oranges)個(gè)橘子"

let show : String = "\(apples)"

print(appleSummary)

//swift 中的數(shù)據(jù)類型

var i : Int

Int.max

Int.min

var ui: UInt

UInt.max

UInt.min

var i8 : Int8

Int8.max

Int8.min

var ui8 : UInt8

UInt8.max

UInt8.min

var i16 : UInt16

var i32 : UInt32

var i64 : UInt64

UInt64.max

//浮點(diǎn)

var f1 : Float

var f2 : Double

var f3 : Float32

var f4 : Float64

//Float32 是 Float的別名

//typealias Float32 = Float

//c中起別名的方式

//typedef Float32 MyFloat

//swift 中起別名的方式

typealias MyFloat = Float32

var f : MyFloat = 3.24

//布爾

var isBool : Bool //取值 只有true和false

isBool = true

isBool = false

var x2 = 100

isBool = (x2 == 100)


3.值類型和引用類型

//聲明字符串 并 初始化var str = "abc"

print(str)

//聲明字符串 沒(méi)有初始化

var str2 : String//print(str2) //沒(méi)有初始化的變量不可以使用

str2 = ""

print(str2)

//聲明字符串變量 并創(chuàng)建出來(lái)(默認(rèn)初始值是空字符串)

var str3 = String()

print(str3)if str3.isEmpty {??

? print("這個(gè)字符串是空的")

}

let constString = "常量"

//constString = "修改"

var variable = "變量"

variable = "修改"

//值類型 和 引用類型//swift中的字符串是值類型(所有基本數(shù)據(jù)類型都是值類型//swift中所有基本類型數(shù)據(jù)類型全部是結(jié)構(gòu)體//)

var string1 = "Hello"

var string2 = string1

string1 = "OK"

string2

//結(jié)構(gòu)體是值類型

struct MyStruct {

var a = 10

var view = UIView()

func test() {

print("test")

}

}

var ms = MyStruct()

var ms2 = ms //賦值內(nèi)容

ms2.a

ms.a = 20

ms2.a

//類 是引用類型

class MyClass {

var a = 10

var view = UIView()

func test() {

print("test")

}

}

var mc = MyClass()

var mc2 = mc //賦值內(nèi)容

mc2.a

mc.a = 20

mc2.a

//OC中的字符串是引用類型(OC中的所有的類都是引用類型)

var nsString1 : NSMutableString = "Hello"

var nsString2 = nsString1

//通過(guò)引用改變 內(nèi)容

nsString1.appendString("abc")

nsString2

//改變 nsString1 的引用的地址

nsString1 = "aaaaaaa"

nsString2

////C中參數(shù)值傳遞 和參數(shù)地址傳遞

//void add(int a) {//值傳遞

//a += 20

//? ? //a = 120

//}

//

//void add1(int *a) {//地址傳遞

//*a += 20

//}

//int x = 100

//

//add(x) //值傳遞

//x = 100

//add1(&x)? //地址傳遞

//x = 120

//字符

var char : Character = "A"

char = "中"

char = "??"

var s = "ad??fgfhfj\(100)hhfhftygyh"

var 中國(guó) = "china"

var ?? = "dog"

var s2 = "日本" + ??

var str10 = "Hello"

var str20 = "there"

let rest = str10 + str20

var ch : Character = "!"

let newStr = rest + String(ch)

let newStr2 = rest + "\(ch)"

//OC中數(shù)組 字典 集合中放入的元素只能是NSObject類型的元素

//UIView *view = [[UIView alloc] init];//1

//NSMutableArray *array = [NSMutableArray array];

//[array addObject:view]? //view + 1? ? ? 2

//[view release]? //-1

//c 中 字符是字符數(shù)組,swift中一樣

var catCharacters : [Character] = ["C", "a", "t", "!"]

catCharacters[0] = "A"

//通過(guò)字符數(shù)組創(chuàng)建字符串

var catString : String = String(catCharacters)

//遍歷 字符串

for char in catString.characters {

print(char)

}

if catString.hasPrefix("A") {

print("字符串是以A開(kāi)頭的")

}

if catString.hasSuffix("!") {

print("字符串是以!結(jié)尾的")

}

let wiseWords = "\"想象力比知識(shí)更重要\" ----愛(ài)因斯坦"

print(wiseWords)

//String 和 NSString 的轉(zhuǎn)換

var nsString_1 : NSString = "NSString"

//NSString 轉(zhuǎn)換為 String 需要 as

var string_1 : String = nsString_1 as String

as String

//String 轉(zhuǎn)換為 NSString 直接自動(dòng)轉(zhuǎn)

var nsString_2 : NSString = string_1

/************** 復(fù)習(xí)原來(lái)的知識(shí) *******************/

//創(chuàng)建一個(gè)空數(shù)組

var objects : [NSObject] = []

var nsNum = NSNumber(int: 100)

var nsString = NSMutableString(string: "abc")

nsString.substringToIndex(1)

objects.insert(nsNum, atIndex: 0)

objects.insert(nsString, atIndex: 1)

objects.count

var obj : NSObject = objects[1]

//將 NSObject 類型 轉(zhuǎn)換為 NSMutableString類型

var strObj = obj as! NSMutableString

strObj.substringToIndex(1)


4.運(yùn)算符

var a, b, c, d, e, f : Int

a = 10

b = 20

//swift中不可以這樣使用,因?yàn)閟wift中的賦值運(yùn)算符函數(shù)沒(méi)有返回值

//a = b = c = d = e = f = 50

1 + 2

5 - 3

2 * 3

10 / 3

10.0 / 3

10.3 / 1.2

9 % 4

-9 % 4

9 % -4

-9 / -4

//swift中可以對(duì)浮點(diǎn)數(shù)取余

10.3 % 1.2

a = 10

//單目

a++

++a

a = 10

b = a++ + ++a + ++a + a++

a--

--a

//比較運(yùn)算符

a == b

a != b

a > b

a < b

//三目運(yùn)算符

a > b ? a : b

//? 聲明可選值 swift中只有可選值可以為nil 可選值默認(rèn)使用nil初始化

var x : Int?

x = nil

let r = x != nil ? x : 0

r

//空合運(yùn)算符

let r2 = x ?? 0 //如果x不是nil 返回x 否則返回 0, 和上面的三目 意義一樣

r2

//區(qū)間運(yùn)算符

a = 5

b = 10

//全開(kāi)

a...b

5...10

for index in 1...5 {?

?print(index)

}

for index in a..<b {

print(index)

}

//如果不需要 index 可以用 _ 把位置占上

for _ in 1...5 {

print("重復(fù)打印這句話")

}

//邏輯運(yùn)算符

a = 10

b = 20

c = 30

a < b && b < c

a > b || b > c

!(a < b)

//if

//如果一行中有多個(gè)語(yǔ)句,使用;分割

a = 30; b = 50

if a > b {

print("a 大")

} else if a < b {

print("b 大")

} else {

print("一樣大")

}


5.分支

/**

*? switch

1.完備性,不管有多少種可能一定要有分支進(jìn)入

2.沒(méi)有隱式貫串,不用加break,也不會(huì)繼續(xù)執(zhí)行下面的case

3.如果需要繼續(xù)向下貫串,只能使用fallthrough 來(lái)向下貫串

*/

let x = 99

switch x {

case 1:

print("x == 1")

case 2, 3, 4, 5:

if x == 5 {

break

}

print("x 是 2 -- 5")

fallthrough //顯示貫串

case 6...100:

print("x是6---100")

default:

print("x = 不在范圍內(nèi)")

}

let vegetable = "青辣椒"

switch vegetable {

case "芹菜":

print("這個(gè)菜 是芹菜")

case "黃瓜", "豆芽菜":

print("這個(gè)菜 是黃瓜 或 豆芽菜")

//用x把vegetable接收過(guò)來(lái),并且判斷是否是以辣椒結(jié)尾的,如果是進(jìn)入case

case let x where x.hasSuffix("辣椒"):

print("這個(gè)菜 是那種狠辣狠辣的 \(x)")

default:

print("這個(gè)是草")

}


6.循環(huán)

for index in 1...10 {

print("index 的值是\(index)")

}

for index in 1..<10 {

// index = 100 //默認(rèn)是常量

print("index 的值是\(index)")

}

for ch in "abcdef".characters {

print("ch 的值是\(ch)")

}

for var i = 0; i < 10; i++ {

print("i = \(i)")

}

var j : Int

for j = 0; j < 10; j++ {

print("j = \(j)")

}

var a = 0

while a <= 10 {

print(a)

a++

}

a = 0

//相當(dāng)于 原來(lái)的 do while

repeat {

print(a)

a++

}while a <= 10


7.break和continue

for var i = 0; i < 10; i++ {

if i == 5 {

? ? break

? ?}

? ? print(i)

}

for var i = 0; i < 10; i++ {

if i == 5 {

? ?continue

? ?}

? print(i)

}

print("----------------")

var a = 0

//帶標(biāo)的語(yǔ)句

loop : while a < 10 {

? ?a++;

switch a {

? ? case 5:

? ? ? ? break loop

? ? case let b where a > 1 && a < 4:

? ? ? ?continue

? ? default:

? ? ? ? print(a)

? ?}

}

print("-----------------")

loop : for var i = 0; i < 3; i++ {

? ?print("=============")

? ? for var j = 0; j < 3; j++ {

if j == 1 {

? ? ?continue loop

? ? }

? ? print(j)

? ?}

?}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容