美文网首页
swift学习(一)

swift学习(一)

作者: 内心强大的Jim | 来源:发表于2016-07-17 23:22 被阅读59次

    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)

       }

     }

    相关文章

      网友评论

          本文标题:swift学习(一)

          本文链接:https://www.haomeiwen.com/subject/nvlpjttx.html