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 //常量不可修改

//字面值

//整数的字面值

var x = 10

x = 0000000015//整数的字面值会忽略前面任意多个0

x = -15

x = 1_000_000_000//这里的下划线没有实际意义,只是增加代码的可读性

//八进制

x = 0o15

//十六进制

x = 0xff

//二进制

x = 0b110010

//浮点数

var y = 3.14

y = 1.25E-2//科学计数法  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 = "我有\(apples)个苹果和\(oranges)个橘子"

let show : String = "\(apples)"

print(appleSummary)

//swift 中的数据类型

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)

//声明字符串变量 并创建出来(默认初始值是空字符串)

var str3 = String()

print(str3)if str3.isEmpty {  

  print("这个字符串是空的")

}

let constString = "常量"

//constString = "修改"

var variable = "变量"

variable = "修改"

//值类型 和 引用类型//swift中的字符串是值类型(所有基本数据类型都是值类型//swift中所有基本类型数据类型全部是结构体//)

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中参数值传递 和参数地址传递

//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中数组 字典 集合中放入的元素只能是NSObject类型的元素

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

//NSMutableArray *array = [NSMutableArray array];

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

//[view release]  //-1

//c 中 字符是字符数组,swift中一样

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

catCharacters[0] = "A"

//通过字符数组创建字符串

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

/************** 复习原来的知识 *******************/

//创建一个空数组

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中的赋值运算符函数没有返回值

//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中可以对浮点数取余

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

//区间运算符

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,也不会继续执行下面的case

3.如果需要继续向下贯串,只能使用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.循环

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)

   }

 }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容