Swift第一周學習總結

一. 認識Swift

1.標識符的命名規(guī)則

1. 字母(Unicode字符)、數(shù)字、下劃線,數(shù)字不能開頭
2. 大小寫敏感
3. 不能使用關鍵字做標識符
4. 駝峰標識 - 第一個單詞全小寫以后每個單詞首字母大寫
5. 見名知意

2.終止符

關鍵字 terminator --打印完成后如有其它打印文字不會換行,繼續(xù)打印浙炼。print打印函數(shù)默認打印完成后自動換行

print("Hello, World", terminator: "")

3.字符串插值

關鍵字 (成員變量) 將成員變量值插入字符串中

let a = 10, b = 10
print("\(a) + \(b) = \(a + b)")

//成員變量作除法時的一些特殊情況
let x = 5
let y = 0
print(x / y)    // 運行時異常

// 整數(shù)除以0產(chǎn)生運行時異常
// 小數(shù)除以0可能的結果是inf/-inf/nan
// inf - infinity(無窮大)
// nan - not a number(不是一個數(shù))

4.轉(zhuǎn)義字符

轉(zhuǎn)義字符一般全面都會帶一個/赊级。
/n 代表換行符
/t 代表制表符

//print("Hello, World!", terminator: "\n")
//print("大家好", terminator: "\t")
//print("我是制表符")

二.變量和常量

常量關鍵字 let
變量關鍵字 var
Swift具有根據(jù)你的數(shù)據(jù)來判斷類型進行保存的特點(類型推斷)

let m  = 10 //不可變的整型變量
var n  = 10 //可變整型變量
let m  = true //不可變的Bool值
var n  = true //可變Boll值的變量
let m  = 5.2  // double - 不可變
var n  = 5.2  // double - 可變
let m  = "Hello World" // String - 不可變
var n  = "Hello World" // String - 可變

正常情況下表示整數(shù)首選Int, 表示小數(shù)首選Double
表示字符串首選String, 表示真假首選Bool

元組(tuples)用一個變量或一個常量保存多項數(shù)據(jù)信息的的類型

//方式1
let stu = (1001, "學生1", true, 23)//定義元組
let number = stu.0 // 取出元組中學號
//方式2
let stu : (id: Int, name: String, gender: Bool, age: Int) = (1001, "學生1", true, 23)//定義元組
let name = stu.name // 取出元組中的名字

// 用元組交換兩個變量的值
var x = 5, y = 10
(x, y) = (y, x)
print(x)
print(y)

三.運算符

運算符(運算符兩邊的變量或常量類型必須一致才能做運算)

  • 算術運算符: + - * / %
  • 關系運算符: == != > >= < <=
  • 短路運算符: && ||
//
//算術運算符
var str1 = "Hello"
var str2 = "world"
str1 = str1 + " " + str2 //字符串拼接
print(str1)
//關系運算符
print(str1 > str2)//是一個Bool
//查看字符串的大小 - utf16
var str5 = "王大錘"
for temp in str5.utf16 {//str5.utf16 - 查看字符串大小
    print(temp)
}
var str6 = ""
for temp in str6.utf16 {
    print(temp)
}
print(str5 < str6)
let year = 2000
let c1 = year % 4 == 0      // 四年一閏
let c2 = year % 100 != 0    // 百年不閏
let c3 = year % 400 == 0    // 四百年又閏
//短路運算符
// && - 短路與運算(而且)
// || - 短路或運算(或者)
if (c1 && c2) || c3 {
    print("\(year)年是閏年")
}
else {
    print("\(year)年不是閏年")
}

三元運算符

let msg = username == "admin" && password == "123456" ? "登錄成功!!!" : "非法用戶!!!"
//提醒: 三元條件運算的?前面一定要加空格!!!

四.分支結構

1.if語句控制的分支結構

格式

if true {
}
else if ture {
}
else{
}
//優(yōu)先執(zhí)行true陈轿, 如果Bool值為假就往下繼續(xù)判斷吝羞,直到else都為假執(zhí)行else語句

2.switch語句控制的分支結構

格式

switch(num) //num為一個變量用作于判斷
{
//case的值與變量的值做判斷,如果想等執(zhí)行.case的值可以為一個范圍
    case 0:
        print(num) //如果num等于0,執(zhí)行
    case 1:
        print(num)
    case 2..<5 :
        print(num) //如果num的值在大于等于2且小于5的時候,執(zhí)行
    default:
        print("最后執(zhí)行") //如果前面分支都沒有執(zhí)行,最后會執(zhí)行default
}

五.循環(huán)結構

1.for in 循環(huán)

該循環(huán)可以帶變量也可不帶變量,如果有變量類型只能為Int,每循環(huán)一次變量+=1.
in后面是變量范圍 1...5,代表該變量的值是從1增加到5了讨,循環(huán)5次. 1..<5,代表該變量值從1到4(不包括5),循環(huán)4次捻激。循環(huán)的次數(shù)是由in后面的范圍決定的

for _ in 0...5 {
    print("代碼執(zhí)行6次循環(huán),沒有變量")
}
for i in 0..<5 {
    print(i) // i - 0 ~ 4
}

2.while循環(huán)

當while后面的值為true時代碼會進入循環(huán),如果為false結束循環(huán)前计。

var i = 1
var judge = true
while judge {
    if i = 10 {
        judge = false
    }
    i += 1
    print("循環(huán)在繼續(xù)")
}
//當i = 10時, judge為false.等到下次執(zhí)行到while時,不會執(zhí)行循環(huán)內(nèi)的語句.循環(huán)終止

3.repeat while 循環(huán)

repeat while 循環(huán)與while循環(huán)的最大區(qū)別是,他的判斷條件是寫在循環(huán)最后面的,意思就是說每次循環(huán)結束后進行判斷,如果條件為true,繼續(xù)循環(huán).反之,結束循環(huán),執(zhí)行后面的代碼.當?shù)谝淮芜M入循環(huán)時,不論條件真假都會至少執(zhí)行一次循環(huán)內(nèi)的代碼

var judge = false
repeat { //至少執(zhí)行一次循環(huán)
    print("正在循環(huán)內(nèi)")
}while judge  //該代碼會執(zhí)行一次打印語句
var judge1 = true
var num = 1
repeat { //先執(zhí)行,后判斷
    num += 1
    if num == 10 {
        print("我已經(jīng)循環(huán)了10次啦")
        judge1 = false
    }
}while judge1

六.數(shù)組

1.swift的數(shù)組有多種定義方法

var numArray :[Int] = [] // 創(chuàng)建一個可變空數(shù)組
var numArray = [Int]() //創(chuàng)建一個可變空數(shù)組
var numArray = [4, 6, 3, 7] //類型判段,你傳入的數(shù)組是什么類型數(shù)組num就為什么類型
var numArray = [Int](count: 10, repeatedValue: 0)) //創(chuàng)建一個可變整型數(shù)組,數(shù)組元素為10個,每個元素的初始值都為0.

2.獲取數(shù)組元素個數(shù)

方法為count

var numArray = [1, 2, 3, 4, 5]
let number = numArray.count

3.遍歷數(shù)組

1.直接遍歷(遍歷出來的值為只讀屬性,不能修改數(shù)組元素的值)

var numArray = [1, 2, 3, 4]
for num in numArray {
    print(num) //每次遍歷的num是從數(shù)組中按順序依次遍歷出來的.
}

2.利用元素下標進行遍歷

var numArray = [1, 2, 3, 4, 5]
for index in 0..<numArray.count {
    print(numArray[index]) // index代表數(shù)組元素編號,利用編號能夠拿到數(shù)組中每個元素的值
}

3.取到下標及元素值遍歷

var numArray = [1, 2, 3, 4, 5]
for (index, value) in numArray.enumerate() {
    print("\(index + 1). value") // index代表元素下標,value代表數(shù)組中該下標對應的值
}

4.增加數(shù)組中的元素

方法名append胞谭, insert

var numArray = [1, 2, 3, 4, 5]
numArray.append(3) // 默認將數(shù)字3添加到數(shù)組中最后一個元素
numArray.insert(2, atIndex:0) // 通過下標控制,可以使添加的元素添加到任意位置

并且swift數(shù)組還可以利用+=運算符進行添加元素

var numArray = [1, 2, 3, 4, 5]
numArray += [2] //默認也是加到數(shù)組中最后一個元素

5.刪除元素

方法名remove

var numArray = [1, 2, 3, 4, 5]
numArray.removeAll(keepCapacity:Bool) //刪除數(shù)組中所以元素如果Bool值是true,不會刪除其空間
numArray.removeFirst(n:Int) //刪除前面n個元素
numArray.removeRange //刪除范圍,需傳入一個范圍

6.數(shù)組的復制

var numArray = [1, 2, 3, 4, 5]
let numArray1 = numArray //全部復制
var numArray2 = numArray[0..3] //輔助一部分

7.數(shù)組做加法

var numArray = [1, 2, 3, 4, 5]
let numArray1 = [1, 2]
let numArray2 = numArray + numArray1

8.數(shù)組排序

方法名sort

var numArray = [1, 2, 3, 4, 5]
let numArray1 = numArray.sort() //返回一個新的數(shù)組且已經(jīng)排好序,默認為升序
numArray.sortInPlace() //在原有數(shù)組上進行排序

9.冒泡法,簡單排序法

1.冒泡法

主要思想是每次進行相鄰元素之間的比較,將較大的數(shù)交換到右邊.單次循環(huán)結束后,最大的數(shù)被移到右邊去.依次循環(huán),達到排序的目的

var numArray = [9, 8, 7, 6, 5, 4, 3, 2, 1]
for i in 1..<numArray.count {
    for j in 0..<numArray.count - i {
        if numArray[j] > numArray[j + 1]{
            (numArray[j], numArray[j + 1]) = (numArray[j + 1], numArray[j]) //交換元素
        }
    }
}

冒泡法可進行優(yōu)化

var numArray = [9, 8, 7, 6, 5, 4, 3, 2, 1]
for i in 1..<numArray.count {
    var judge = false
    for j in 0..<numArray.count - i {
        if numArray[j] > numArray[j + 1]{
            (numArray[j], numArray[j + 1]) = (numArray[j + 1], numArray[j])
            judge = true
        }
    }
    if !judge { //當judge為false的時候,表示一次排序都沒有進行.意味著該數(shù)組的順序已經(jīng)排好,不需要再進行排序
        break
    } 
}

2.簡易選擇排序

主要思想是每次選出最小的元素,記錄其下標,將最小的依次與最前面的元素調(diào)換

var numArray = [9, 8, 7, 6, 5, 4, 3, 2, 1]
for i in 0..<numArray.count - 1 {
var index = i //記錄最小數(shù)下標,用于交換
for j in i + 1..<numArray.count {
    if numArray[index] > numArray[j]{
        index = j //刷新下標
        }
    }
(numArray[index], numArray[i]) = (numArray[i], numArray[index]) //交換元素
}

10.數(shù)組三大實用方法(閉包)

1.過濾

let array = [23, 37, 96, 55, 40, 92, 68, 88]
let newArray = array.filter{ (a: Int) -> Bool in
    return a > 50 // 過濾掉小于50的數(shù)字
}
let newArray1 = array.filter{a in a > 50} // 省略掉括號,return,參數(shù)類型
let newArray2 = array.filter{$0 > 50} //省略參數(shù)

2.映射

let array = [23, 37, 96, 55, 40, 92, 68, 88]
let newArray = array.map{$0 * $0}

3.縮減

let array = [23, 37, 96, 55, 40, 92, 68, 88]
let newArray = array.reduce(0, combine: +) //合并所以值,求和男杈。0為初始值
let newArray = array.reduce(array[0]){$0 > $1 ? $0 : $1} // 輸出最大項,初始值為array[0]
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末丈屹,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子伶棒,更是在濱河造成了極大的恐慌旺垒,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肤无,死亡現(xiàn)場離奇詭異先蒋,居然都是意外死亡,警方通過查閱死者的電腦和手機宛渐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門竞漾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人皇忿,你說我怎么就攤上這事畴蹭√谷裕” “怎么了鳍烁?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長繁扎。 經(jīng)常有香客問我幔荒,道長,這世上最難降的妖魔是什么梳玫? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任爹梁,我火速辦了婚禮,結果婚禮上提澎,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好沙合,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著掂墓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪看成。 梳的紋絲不亂的頭發(fā)上君编,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音川慌,去河邊找鬼吃嘿。 笑死,一個胖子當著我的面吹牛梦重,可吹牛的內(nèi)容都是我干的兑燥。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼琴拧,長吁一口氣:“原來是場噩夢啊……” “哼贪嫂!你這毒婦竟也來了?” 一聲冷哼從身側響起艾蓝,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤力崇,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后赢织,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體亮靴,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年于置,在試婚紗的時候發(fā)現(xiàn)自己被綠了茧吊。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡八毯,死狀恐怖搓侄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情话速,我是刑警寧澤讶踪,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站泊交,受9級特大地震影響乳讥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜廓俭,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一云石、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧研乒,春花似錦汹忠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽奖地。三九已至,卻和暖如春赋焕,著一層夾襖步出監(jiān)牢的瞬間参歹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工隆判, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留犬庇,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓侨嘀,卻偏偏與公主長得像臭挽,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子咬腕,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

  • swift第一周學習總結 什么是swift語言 swift 語言是蘋果公司在2014年的WWDC大會上發(fā)布的全新的...
    青昀兄閱讀 174評論 0 1
  • [TOC] 要點總結 程序設計 變量和常量 運算符 分支結構 循環(huán)結構 數(shù)組 具體學習情況總結 第一天 Swift...
    Youth丶夏夏閱讀 947評論 0 5
  • [TOC] 初識Swift 第一次給我的四大印象 Swift是一種面向?qū)ο蟮挠嬎銠C編繪語言 Swift不需要引入頭...
    落葉追風閱讀 303評論 0 6
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile麗語閱讀 3,827評論 0 6
  • 1.程序設計 在這個過程中欢峰,在Xcode這個開發(fā)軟件中,老師通過講解了幾個有趣的運用涨共,比如:牛眼睛纽帖,跑人,擲骰子等...
    8d6d0daa678e閱讀 183評論 0 0