swift學習(一)

1.var與let

//用關鍵字 var 聲明字符串變量 str 類型是通過右值推斷出來的(類型推斷)

var str = "Hello, playground"

//聲明一個變量 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ù)的字面值會忽略前面任意多個0

x = -15

x = 1_000_000_000//這里的下劃線沒有實際意義,只是增加代碼的可讀性

//八進制

x = 0o15

//十六進制

x = 0xff

//二進制

x = 0b110010

//浮點數(shù)

var y = 3.14

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


2.基本類型

//var str = UIImage()

//int a

//var a : Int

//聲明變量標準寫法

var welcomeMessage2 : String = "welcomeMessage"

//類型標注? 聲明字符串變量

let welcomeMessage : String

//初始化

welcomeMessage = "Welcome to swift"

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

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

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

var x = 10 //推斷為整型

var msg = "OK" //推斷為一個字符串

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

//a b 推斷為浮點類型 c 推斷為整型 d 推斷為字符串類型

var i1 = 5

var d1 : Double

//這里的類型檢查非常嚴格熬词,int和double之間都不能自動轉換耕捞,如果要轉換必須強制轉換

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)個蘋果和\(oranges)個橘子"

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

//浮點

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)

//聲明字符串 沒有初始化

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

str2 = ""

print(str2)

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

var str3 = String()

print(str3)if str3.isEmpty {??

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

}

let constString = "常量"

//constString = "修改"

var variable = "變量"

variable = "修改"

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

var string1 = "Hello"

var string2 = string1

string1 = "OK"

string2

//結構體是值類型

struct MyStruct {

var a = 10

var view = UIView()

func test() {

print("test")

}

}

var ms = MyStruct()

var ms2 = ms //賦值內容

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 //賦值內容

mc2.a

mc.a = 20

mc2.a

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

var nsString1 : NSMutableString = "Hello"

var nsString2 = nsString1

//通過引用改變 內容

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 中國 = "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"

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

var catString : String = String(catCharacters)

//遍歷 字符串

for char in catString.characters {

print(char)

}

if catString.hasPrefix("A") {

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

}

if catString.hasSuffix("!") {

print("字符串是以鲸睛!結尾的")

}

let wiseWords = "\"想象力比知識更重要\" ----愛因斯坦"

print(wiseWords)

//String 和 NSString 的轉換

var nsString_1 : NSString = "NSString"

//NSString 轉換為 String 需要 as

var string_1 : String = nsString_1 as String

as String

//String 轉換為 NSString 直接自動轉

var nsString_2 : NSString = string_1

/************** 復習原來的知識 *******************/

//創(chuàng)建一個空數(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 類型 轉換為 NSMutableString類型

var strObj = obj as! NSMutableString

strObj.substringToIndex(1)


4.運算符

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

a = 10

b = 20

//swift中不可以這樣使用帚戳,因為swift中的賦值運算符函數(shù)沒有返回值

//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中可以對浮點數(shù)取余

10.3 % 1.2

a = 10

//單目

a++

++a

a = 10

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

a--

--a

//比較運算符

a == b

a != b

a > b

a < b

//三目運算符

a > b ? a : b

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

var x : Int?

x = nil

let r = x != nil ? x : 0

r

//空合運算符

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

r2

//區(qū)間運算符

a = 5

b = 10

//全開

a...b

5...10

for index in 1...5 {?

?print(index)

}

for index in a..<b {

print(index)

}

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

for _ in 1...5 {

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

}

//邏輯運算符

a = 10

b = 20

c = 30

a < b && b < c

a > b || b > c

!(a < b)

//if

//如果一行中有多個語句,使用渣玲;分割

a = 30; b = 50

if a > b {

print("a 大")

} else if a < b {

print("b 大")

} else {

print("一樣大")

}


5.分支

/**

*? switch

1.完備性逗概,不管有多少種可能一定要有分支進入

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

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

*/

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 = 不在范圍內")

}

let vegetable = "青辣椒"

switch vegetable {

case "芹菜":

print("這個菜 是芹菜")

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

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

//用x把vegetable接收過來,并且判斷是否是以辣椒結尾的枚钓,如果是進入case

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

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

default:

print("這個是草")

}


6.循環(huán)

for index in 1...10 {

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

}

for index in 1..<10 {

// index = 100 //默認是常量

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

//相當于 原來的 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

//帶標的語句

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)

? ?}

?}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末铅搓,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子搀捷,更是在濱河造成了極大的恐慌星掰,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件指煎,死亡現(xiàn)場離奇詭異蹋偏,居然都是意外死亡,警方通過查閱死者的電腦和手機至壤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進店門威始,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人像街,你說我怎么就攤上這事黎棠〗欤” “怎么了?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵脓斩,是天一觀的道長木西。 經(jīng)常有香客問我,道長随静,這世上最難降的妖魔是什么八千? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮燎猛,結果婚禮上恋捆,老公的妹妹穿的比我還像新娘。我一直安慰自己重绷,他們只是感情好沸停,可當我...
    茶點故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著昭卓,像睡著了一般愤钾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上候醒,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天能颁,我揣著相機與錄音,去河邊找鬼火焰。 笑死劲装,一個胖子當著我的面吹牛,可吹牛的內容都是我干的昌简。 我是一名探鬼主播,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼绒怨,長吁一口氣:“原來是場噩夢啊……” “哼纯赎!你這毒婦竟也來了?” 一聲冷哼從身側響起南蹂,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤犬金,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后六剥,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體晚顷,經(jīng)...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年疗疟,在試婚紗的時候發(fā)現(xiàn)自己被綠了该默。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,438評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡策彤,死狀恐怖栓袖,靈堂內的尸體忽然破棺而出匣摘,到底是詐尸還是另有隱情,我是刑警寧澤裹刮,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布音榜,位于F島的核電站,受9級特大地震影響捧弃,放射性物質發(fā)生泄漏赠叼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一违霞、第九天 我趴在偏房一處隱蔽的房頂上張望嘴办。 院中可真熱鬧,春花似錦葛家、人聲如沸户辞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽底燎。三九已至,卻和暖如春弹砚,著一層夾襖步出監(jiān)牢的瞬間双仍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工桌吃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留朱沃,地道東北人。 一個月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓茅诱,卻偏偏與公主長得像逗物,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子瑟俭,可洞房花燭夜當晚...
    茶點故事閱讀 45,446評論 2 359

推薦閱讀更多精彩內容